LoginSignup
2
10

More than 5 years have passed since last update.

Excel VBA (マクロ) 備忘録

Last updated at Posted at 2018-05-04

記載目的

  • Excelでの業務はどの案件でも必要となるため、VBA知識があると効率的
  • 基本的なものから応用的な内容へ繋がる記載にしてゆきたい

補足

  • 本当に必要そうなものに限定する
  • 冗長な表現を極力避ける
  • 随時更新する

記載の順番は以下

  • 【基本的な書き方】
  • 【VBAショートカット】 ※WindowsPC
  • 【具体例】
  • 【作成したVBA】

【基本的な書き方】

説明     例        備考
対象.命令 Range("A1").Select
対象.様子 Range("A1").Value = 123
使用する変数の型はこちらのみで良さそう Long(長整数型) / String(文字列型)

【VBAショートカット】 ※WindowsPC

説明     例        備考
入力候補の表示 Ctrl + Space
行の削除 Ctrl + Y
インデントを付ける 2行以上選択して Tab
インデントを戻す Shift + Tab
クイックヒントの表示 Ctrl + I
無限ループ時の強制中断 Ctrl + Pause / Ctrl + Break / Esc 左記いずれか
実行 F5
コード1行ずつ実行 F8

【具体例】

説明     例        備考
セルコピー Range("A1").Copy TARGET
セルA1から連続してデータが入った最下端セルを選択 Range("B2").End(xlDown).Select
アクティブのワークブックのフルパスを取得 ActiveWorkbook.FullName
他のプロシージャを呼べる Call プロシージャ名
文字色 設定 Cell.Font.Color = RGB(255, 255, 255)
背景色 設定 Cell.Interior.Color = RGB(255, 255, 255)
セルが空欄かどうか調べたい Cell.Value = ""
セルを検索 検索範囲.Find
相対的な位置のセルを操作 Cell.Offset(行数, 列数)
選択範囲の大きさを変更する Cell.Resize(行数, 列数)
セルに数式を入力 Cell.Formula Cell.Value
ワークシート関数を使うには WorksheetFunction.関数名(引数)

【作成したVBA】

プロシージャの最初と最後に入れる処理が早くなるらしい ※コピペして使用する

With Application
  .ScreenUpdating = False
  .EnableEvents = False
  .DisplayAlerts = False
  .Calculation = xlCalculationManual
End With


''''''''''''''''''''''''''''''
'                            '
'   ~~ そのほかの処理内容 ~~         '
'                            '
''''''''''''''''''''''''''''''


With Application
  .ScreenUpdating = True
  .EnableEvents = True
  .CutCopyMode = False
  .Calculation = xlCalculationAutomatic
End With

for文の基本的な使い方①

'指定セルから下方向へ1月から12月までを入力する
Dim i As Integer
 For i =1 to 12
  Cells(i, 1) = i & "月"
 Next i

for文の基本的な使い方②

'上記for文 一個飛ばしバージョン
'一個飛ばし
Dim i As Integer
 For i =1 to 12 Step2
  Cells(i, 1) = i & "月"
 Next i

ファイル開くダイアログ扱い方

Sub ファイル開くダイアログ扱い方()

'変数filenameを定義
  Dim filename As String

'Excelファイルに限定してファイルオープンダイアログを表示させる
  filename = Application.GetOpenFilename("Microsoft Excelブック,*.xls?")

'変数filenameに値がなければ、もしくは、それ以外の場合
  If filename  "False" Then
    Workbooks.Open filename
  Else
    MsgBox "キャンセルしました!"
    Exit Sub
  End If

End Sub

PATHからファイルネーム抽出する

Dim filename As String
Dim filename_from_path As String
Dim targetname As String

'PATHからファイルネームのみ抽出
  filename_from_path = InStrRev(filename, "\")
  targetname = Mid(filename, filename_from_path + 1)

該当シートを、あるあるファイルの1番目のシート後ろへコピーする

Dim targetname As String

'ワークブック「targetname」の「コピーするシート」を、ワークブック「作業ファイル」の1つ目のシートの後ろへコピーする
  Workbooks(targetname).Worksheets("コピーするシート").Copy _
  After:=Workbooks("作業ファイル").Sheets(1)
2
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
10