Excel VBAの備忘録
今朝、今まで検索しまくって地道に書いていたVBAを誤って削除してしまい( ̄▽ ̄;)、「備忘録って大切」と感じたので、ここにメモしておきます!(^^)!
超初心者レベルでお恥ずかしい限りですが…。
◆エクセルファイルを変数に格納する。
Dim wb1 As Workbook
Set wb1 = Workbooks("ブック名")
◆エクセルの表にオートフィルターを設定する。
wb1.Worksheets("シート名").Range("A1").AutoFilter Field:=列番号, Criteria1:=Array( "フィルター項目①", "フィルター項目②", "フィルター項目③"), Operator:=xlFilterValues
◆セル「A1」に値を入力する。
wb1.Worksheets("シート名").Range("A1").Value = "入力したい値"
◆フィルターでの抽出された行のみに値を入れたい。
Dim R1 As Range
With Range("A1").CurrentRegion.Offset(1, 0)
For Each R1 In .Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Rows
R1.Range("BZ1") = "入力したい値"
Next R1
End With
◆オートフィルターを解除する。
wb1.Worksheets("シート名").Range("A1").AutoFilter
◆指定した場所に列を挿入する。
wb1.Worksheets("シート名").Columns(挿入する列番号).Insert
◆表の最終行を取得する。
MaxRow = wb1.Worksheets("シート名").Range("B6").End(xlDown).Row
◆行を削除する。
wb1.Worksheets("シート名").Rows(削除する行番号).Delete
◆繰り返し処理
Dim i As Long
For i = 6 To MaxRow1
If Cells(i, 7).Value = "一致させたい文字列" Then
Cells(i, 8) = 2
End If
If Cells(i, 7).Value = "一致させたい文字列" Then
Cells(i, 8) = 2
End If
If Cells(i, 7).Value = "一致させたい文字列" Then
Cells(i, 8) = 1
Next i
◆今日の日付を取得して、シート名にする。
Dim d As Date
d = Date
Dim FileName1 As Variant
Dim FileName2 As Variant
FileName1 = "今月のデータ(" & Year(d) & "-" & Month(d) & ")"
FileName2 = "先月のデータ(" & Year(d) & "-" & Month(d) - 1 & ")"
wb1.Worksheets("Sheet2").Name = FileName1
wb1.Worksheets("Sheet3").Name = FileName2
◆シートをコピーして末尾にペーストする。
wb1.Worksheets("Sheet1").Copy After:=wb1.Worksheets(Worksheets.Count)
◆VLOOKUPを設定する。
For j = 6 To MaxRow2
Dim tbl2 As Range
Set tbl2 = wb1.Sheets("シート名").Range("B:X")
Dim key2 As Long
key2 = wb1.Worksheets("シート名").Range("B" & j).Value
On Error GoTo ErrHandl2
Dim ret2 As String
ret2 = WorksheetFunction.VLookup(key2, tbl2, 1, False)
wb1.Worksheets("シート名").Range("A" & j).Value = ret2
ErrHandl2:
ret2 = "該当なし"
Err.Clear
Resume Next
Next j