切り捨て 四捨五入 切り上げ |
Num_countup = Application.RoundDown(実数, 0)
Num_round = Round(実数, 0)
Num_countdown = RoundUP (実数, 0)
|
|
ユーザ関数の作り方 |
Function 指定前日(本日 As Date ) As Date
指定前日 = 本日 - 1
End Function
--------------------------------------------
Sub 前日ファイル名()
Dim 本日 As Date
本日 = Date
前日 = 指定前日(本日)
MsgBox "本日=" & 本日 & vbCrLf & "前日=" & 前日
End Sub
|
|
配列の初期化 |
Dim TBL(30, 5) As Variant
Erase TBL
|
|
1次元動的配列 |
Dim Data() As Variant
N = 0
For I = 2 To MaxRow
ReDim Preserve Data(N) As Variant
Data(N) = Cells(I).Value
N = N + 1
Next I
Preserve がないと、配列拡張ごとに既存要素をクリアする
|
|
2次元動的配列 |
Dim Data() As Variant
N = 0
For I = 2 To MaxRow
ReDim Preserve Data(19, N) As Variant
For J = 0 To 19
Data(J, N) = Cells(I, J + 1).Value
Next J
N = N + 1
Next I
ReDim Preserve Data(N, 19) As Variant では実行時にエラーになる。
1次元目を確定して、2次元目を拡張してゆく
|
|
Public Work() As Variant
Sub UserForm2_Test()
Dim N As Integer
ReDim Preserve Work(9, 0) As Variant
Work(0, 0) = "交付日付"
xxxxxxxxxxx
Work(9, 0) = "担当"
N = 1
ReDim Preserve Work(9, N) As Variant
Work(0, N) = "2012年4月21日"
xxxxxxxxxxx
Work(9, N) = "営業事務"
UserForm2.Show vbModeless
End Sub
2次元配列(I,J)を段階的に ReDim する場合、I行、J列自由に再定義できるのではなく、
( "インデックスが有効範囲にありません" エラーがでるので)I列を固定し、J列のみ再定義する
|
|
定数定義と有効範囲 |
Option Explicit
Public X
Private Y
Public Const A = "AAA"
Private Const B = "BBB"
Sub TEST()
Dim Y
モジュールレベルよりプロシージャレベルが優先
Static Z
Const C = "CCC"
End Sub
|
|
偶数番、奇数番で設定を変える |
Cells(4, 書出し列). Select
Selection.NumberFormatLocal = "#,##0_ "
If I Mod 2 = 1 Then
Selection.NumberFormatLocal = "#,##0.0_ "
End If
|
|