プログラミング > Excel & VBA >
Dimを用いる。変数名をname、変数の型となるクラス (オブジェクト) をClassとすれば以下のコードになる。また、宣言は省略も可能。ただし変数の持つ関数やメソッドが不明になるのでコーディングはしにくくなる場合があるので注意。
Dim name As Class
WorkbookはExcelファイル、WorksheetはExcelファイルの中のシート、Rangeはシート中の単体セルから範囲セルを表している。
Dim work_book As WorkbookDim work_sheet As WorksheetDim table as RangeClassBooleanTrueもしくはFalse。DateIntegerLong、LongLongとなっている。SingleDoubleがある。VariantString
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 = FalseApplication.Calculation = xlCalculationManualApplication.EnableEvents = FalseFalseはTrueに、xlCalculationManualはxlCalculationAutomaticに戻しておくこと!origintablevalue
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列の値を取得できる。とても便利。