excel:vba-frequent-code
目次
VBAでよく使うコード
プロシージャ
Auto_Open: ブックを開くと同時にマクロを実行する
Sub Auto_Open() 'マクロを記述 End Sub
マクロを実行せずに開く場合はShiftキーを押しながら開きます。
メソッド
Applicationオブジェクト
CutCopyMode: カット・コピーモードを解除する
Application.CutCopyMode = False
DisplayAlerts: 警告メッセージの表示
'警告メッセージを非表示にする Application.DisplayAlerts = False '警告メッセージを表示する Application.DisplayAlerts = True
ScreenUpdating: マクロ実行中の画面更新を止める
'更新を止める Application.ScreenUpdating = False '更新を再開する Application.ScreenUpdating = True
Workbookオブジェクト
Add: 新規ブックを開く
Workbooks.Add
Names.Add: セル範囲に名前を付けてリスト化する
Dim listName As Name 'リストが存在したら削除 For Each listName In WORKBOOK.Names If listName.Name = "hoge" Then Range("hoge").Name.Delete End If Next listName WORKBOOK.Names.Add Name:="hoge", RefersTo:="=Sheet1!$A$2:$C$10"
名前を付けることについては1行で済みますが、同じ名前が既にあるとエラーになるため、先に削除してから付けるようにします。
SaveAs: ブックを保存する
WORKBOOK.SaveAs Filename:=ThisWorkbook.Path & "/hoge.xlsx", FileFormat:=xlNormal
ファイル形式 | FileFormatの引数 |
---|---|
xlsx | xlWorkbookDefault |
xlsm | xlOpenXMLWorkbookMacroEnabled |
xls | xlWorkbookNormal |
csv | xlCSV |
txt | xlText |
Worksheetオブジェクト
Copy: シートをコピーする
'指定シートの前 WORKSHEET.Copy Before:="指定シート名" '指定シートの後ろ WORKSHEET.Copy After:="指定シート名"
Delete: シートを削除する
WORKSHEET.Delete
シート削除時に警告メッセージが表示されるので、ApplicationオブジェクトのDisplayAlertsとセットで使うのが多いです。
ExportAsFixedFormat: シートをPDF出力する
WORKSHEET.ExportAsFixedFormat Type:=xlTypePDF, FileName:=ThisWorkbook.Path & "/hoge.pdf"
このメソッドは厳密にはXPS形式でも出力できますが、PDF出力することの方が多いのではないかと思います。
PageSetup.CenterHeader: ヘッダーの中央に値を入力する
WORKSHEET.PageSetup.CenterHeader = "hoge"
PageSetup.FitToPagesTall: 縦方向に何ページで印刷するか指定する
WORKSHEET.PageSetup.FitToPagesTall = 1
PageSetup.FitToPagesWide: 横方向に何ページで印刷するか指定する
WORKSHEET.PageSetup.FitToPagesWide = 1
PageSetup.LeftHeader: ヘッダーの左側に値を入力する
WORKSHEET.PageSteup.LeftHeader = "hoge"
PageSetup.RightHeader: ヘッダーの右側に値を入力する
WORKSHEET.PageSetup.RightHeader = "hoge"
PageSetup.Zoom: 印刷時の拡大率を設定する
WORKSHEET.PageSetup.Zoom = False
単位%で指定できますが、Falseを指定すると拡大・縮小率を指定しません。
FitToPagesTall オブジェクトとFitToPagesWide オブジェクトと組み合わせて縦横1ページで印刷できる縮小率に設定する時は先にFalseを指定して拡大・縮小率をリセットしておきます。
PrintOut: シートを印刷する
WORKSHEET.PrintOut ActivePrinter:="プリンタ名"
Protect: シートを保護する
WORKSHEET.Protect 'マクロ実行時は解除 WORKSHEET.Protect UserInterfaceOnly:=True
Unprotect: シート保護を解除する
WORKSHEET.Unprotect
Rangeオブジェクト
AutoFilter: オートフィルターをかける
RANGE.AutoFilter Field:=1, Criteria1:="ほげ"
Fieldで列番号、Criteriaでフィルターをかける条件を指定します。
Copy: クリップボードにコピーする
RANGE.Copy
コピーをした後はApplicationオブジェクトのCutCopyModeメソッドでカットコピーモードを解除します。
End: セル範囲の最終行・列を取得する
'最終行 ''上方向 RANGE.End(xlUp).Row ''下方向 RANGE.End(xlDown).Row '最終列 ''左方向 RANGE.End(xlToLeft).Column ''右方向 RANGE.End(xlToRight).Column
FormatConditions: 条件付き書式を設定する
RANGE.FormatConditions.Delete '既に設定されている条件付き書式を削除 With RANGE.FormatConditions.Add(Type:=xlTextString, String:="hoge", TextOperator:=2) .Font.Color = RGB(255, 255, 255) '文字色 .Interior.Color = RGB(255, 0, 0) '背景色 End With
ListObjects: テーブルを取得する
WORKSHEET.ListObjects("テーブル名")
Paste: ペーストする
RANGE.Paste
PasteSpecial: 形式を選んでペーストする
RANGE.PasteSpecial Paste:=xlPasteValues
Replace: セルの値を置換する
RANGE.Replace What:="置換前" Replacement:="置換後"
Sort: セル範囲をソートする
RANGE.Sort Key1:=Range("A2"), order1:=xlAscending, _ '昇順 Key2:=Range("B2"), order2:=xlDescending '降順
Validation: リストの入力規則を設定する
With RANGE.Validation .Delete '既に設定されている入力規則を削除 .Add Type:=xlValidateList, Formula1:="hoge,fuga,piyo" .ShowError = False '規則外の入力時のエラー表示 End With
ListObject (テーブル) オブジェクト
DataBodyRange: テーブルの全体を取得する
LISTOBJECTS.DataBodyRange
ListColumns: テーブルの列を取得する
LISTOBJECTS.ListColumns(1) '列の名前から列番号を取得する LISTOBJECTS.ListColumns("列の名前").Index
ListRows: テーブルの行を取得する
LISTOBJECTS.ListRows(1)
'セルで指定 ListRowsで行、Rangeで列番号を指定する
LISTOBJECTS.ListRows(1).Range(1)
Range: 見出しを含むテーブルの全体を取得する
LISTOBJECTS.Range
フォーム関係
AddItem: リストボックスに値を追加する
LISTBOX.AddItem "hoge"
Enabled: オブジェクトを使用不可能にする
'使用不可能にする OBJECT.Enabled = False '使用可能にする OBJECT.Enabled = True
Hide: フォームを非表示にする
USERFORM.Hide
閉じる場合はUnload ステートメントを利用しまが、フォームで取得した値を保持できません。保持したい場合はこのHide メソッドを使います。
Left: フォームの表示位置 (左部分) を指定する
USERFORM.Left = 300
ListCount: リストボックスの件数を取得
LISTBOX.ListCount
ListIndex: リストボックスで選択している行番号を取得
LISTBOX.ListIndex
RowSource: リストボックスにセル範囲の値を格納する
LISTBOX.RowSource = RANGE
Show: フォームを開く
USERFORM.Show
'フォームを開いている間も操作可能にする
USERFORM.Show vbModeless
StartUpPosition: フォームの初期表示位置を指定
USERFORM.StartUpPosition = 0
0 | 指定しない |
1 | USERFORMが属する項目の中央 |
2 | 画面全体の中央 |
3 | 画面の左上隅 |
Top: フォームの表示位置 (上部分) を指定する
USERFORM.Top = 300
ステートメント
Unload: オブジェクトをメモリから削除
Unload OBJECT
オブジェクト全般に使用しますが、フォームを閉じる時に登場します。
関数
DateAdd: 日付の計算をする
DateAdd("d", 1, DATE)
第1引数には下記の内どの値を計算するか、第2引数は加算する数値を入れます。
第1引数 | 内容 |
---|---|
yyyy | 西暦 |
m | 月 |
d | 日 |
h | 時 |
n | 分 |
s | 秒 |
q | 四半期 |
y | 通年での日数 |
ww | 週 |
Format: 日付等の書式を指定する
Format(DATE, "yyyymmdd") '1990/7/3 から 19900703
InputBox: 入力ボックスで値を取得する
InputBox("値を入力")
引数には入力ボックスに表示する文字列を指定します。
LCase: アルファベットを小文字にする
LCase("Hoge") 'hoge
MsgBox: ダイアログボックスを表示する
MsgBox("OKで続行、キャンセルで中止", vbOKCancel)
第2引数に表示するボタンを指定でき、Long型の変数(変数名は「rc」が慣例?)にどのボタンを押したかを格納できます。
StrConv: 全角文字を半角にする
StrConv("ほげホゲHoge", vbNarrow) 'ほげホゲHoge
UCase: アルファベットを大文字にする
UCase("Hoge") 'HOGE
スポンサーリンク
excel/vba-frequent-code.txt · 最終更新: 2024/07/26 01:53 by shimehitsu14