見出し画像

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

この記事が気に入ったらサポートをしてみませんか?