プログラミング > Excel & VBA >
Dim
を用いる。変数名をname
、変数の型となるクラス (オブジェクト) をClass
とすれば以下のコードになる。また、宣言は省略も可能。ただし変数の持つ関数やメソッドが不明になるのでコーディングはしにくくなる場合があるので注意。
Dim name As Class
Workbook
はExcelファイル、Worksheet
はExcelファイルの中のシート、Range
はシート中の単体セルから範囲セルを表している。
Dim work_book As Workbook
Dim work_sheet As Worksheet
Dim table as Range
Class
Boolean
True
もしくはFalse
。Date
Integer
Long
、LongLong
となっている。Single
Double
がある。Variant
String
With Workbooks.Open(file_name, ReadOnly:True)
.Close SaveChanges:=False
With
内であればドットメソッド.method
を呼び出せる。ReadOnly:True
で読み取り専用で開いている。また閉じるときは
Set work_book = Workbooks("file_name.xlsx")
Set
で宣言する。
Set work_sheet = Worksheets("sheet_name")
Set work_sheet = Worksheets(1)
Set
で宣言することで扱える。シート名"sheet_name"
ではなく、シート番号でも読み込みができる。If
If flag = condition
...
End If
=
、大小関係は<
と>
、否定は<>
もしくはIf Not ...
。For
For i = 0 To N
...
Next i
i = 0
からN
まで。For Each
For Each cell In Range(“A1:A5”)
...
Next cell
Do While
i = 0
Do While i <> 10
...
i = i + 1
Loop
Go To
For i = 0 To N
...
If i = 0 Then
Go To
Continue
End If
Continue:
Next i
i = 0
のときだけスキップ、Continue文の代わりになる。
Debug.Print ..., ...
Application.StatasBar = ...
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
False
はTrue
に、xlCalculationManual
はxlCalculationAutomatic
に戻しておくこと!origin
table
value
Dim work_book As Workbook
Dim work_sheet As Worksheet
Dim origin As Range
Dim table As Range
Set work_book = Workbooks("file_name.xlsx")
With work_book
Set work_sheet = .Worksheets("sheet_name")
With work_sheet
Set origin = .Range("A1")
col = origin.End(xlToRight).Column
row = origin.Offset(Rows.Count - 1, 0).End(xlUp).Row
origin.Resize(1, col).AutoFilter
origin.Resize(1, col).AutoFilter
Set table = origin.Resize(row, col)
value = table.Value
For i = 1 To row
For j = 1 To col
Debug.Print value(i, j)
Next j
Next i
End With
End With
A1
セルとしている。col
は原点から空白までの列数を返している。もし空白の列名を含みたい場合、origin.Offset(0, Columns.Count - 1).End(xlToLeft).Column
とする。row
も同様の処理で行数を得ている。origin.Resize(1, col).AutoFilter
は列のフィルターを外すため。フィルターが掛かっていた場合、取得する値が変わってしまう。なぜかはわからないが2回コールしないとはずれない。value = table.Value
とすると2次元配列のように値にアクセスできる。例えばvalue(3, 4)
とすれば表の3行4列の値を取得できる。とても便利。