iEhohs DokuWiki

プログラミングや設定方法など、個人的なナレッジを残しておくWikiです。

ユーザ用ツール

サイト用ツール


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の引数
xlsxxlWorkbookDefault
xlsmxlOpenXMLWorkbookMacroEnabled
xlsxlWorkbookNormal
csvxlCSV
txtxlText

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指定しない
1USERFORMが属する項目の中央
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