VBA

【VBA】備忘録

記事内に商品プロモーションやアフィリエイトを含む場合があります

基本

定数宣言

Public Const 定数名 As データ型 = "〇〇"
Private Const 定数名 As データ型 = "〇〇"

変数宣言

Dim 変数名 As データ型 : Set 変数名 = "○○"

プロシージャ

'基本
Public/Private Sub Test()
'...
End Sub

'マクロ機能から参照不可、自作関数として参照可能
Public/Private Function Test()
'...
End Function

例外処理

GoTo CONTINUE

GoTo EXIT_THIS
'...
EXIT_THIS:
    Exit Sub
ERR_エラー名:
    Msg "エラーメッセージ"

'例外発生させない
CONTINUE:

プログラム

IF

If 比較式 Then
'   ...
ElseIf 比較式 Then

End If

コピペ

Sheets("シート名").Range("A1").CurrentRegion.Copy
Sheets("シート名").Range("セル番地").PasteSpecial Paste:=xlPasteValues

呼び出し

Call プロシージャ名()
Application.Run ("プロシージャ名")

枠固定/解除

※固定予定のシートをActivateさせておく必要がある。
Range("セル番地").Select
ActiveWindow.FreezePanes = True

'解除
ActiveWindow.FreezePanes = False

ステータスバー

Application.StatusBar = "○○処理中"

'非表示
Application.StatusBar = False

最終行/最終列

'行
Range("A1").End(xlDown).Row
Range("A1048576").End(xlUp).Row

'列
Range("A1").End(xlToRight).Column
Range("XFD1").End(xlToLeft).Column

オートフィルター

'Withステートメント:同じセル番地の時連続して実行できる
With Range("セル番地")
    .AutoFilter Field:=1, Criteria1:="A", Operator:=xlOr, Criteria2:="B"
    .AutoFilter Field:=2, Criteria1:="A"
    .AutoFilter Field:=3, Criteria1:"<>A"
End With

'AutoFilterを付けるだけ
Range("セル番地").AutoFilter

'解除する
Range("セル番地").AutoFilterMode = False

オートフィル

Range("A1").AutoFill Destination:=Range("A1:A10")
Range("A1:C1").AutoFill Destination:=Range("A1:C10")

'書式のみ
Range("A1").AutoFill Destination:=Range("A1:A10") Type:=xlFillFormats
'書式なし
Range("A1").AutoFill Destination:=Range("A1:A10") Type:=xlFillValues

インポート

Dim fullpath As String: fullpath = "C:\〇〇\○○.txt"

Workbooks.OpenText(fullpath, Origin:=65001, Comma:=True)
'Shift-JIS	932
'UTF-8	65001
'UTF-16	1200

'カンマ	Comma:=True
'タブ	        Tab:=True
'セミコロン	Semicolon:=True
'スペース	Space:=True
'その他	Other:=True, OtherChar:=”a”

Workbooks.OpenText Filename:=fullpath, _
    Origin:=932, startrow:=1, DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=True, Space:=False, Other:=False, _
    FieldInfo:=Array(Array(1, 1),Array(2,1))_
    TrailingMinusNumbers:=True

イベント

シート別のモジュールを選択し、コードウィンドウ上部にある(General)→Worksheetに変更。更に右記からイベントを選択。

その他

高速化

'開始
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual

'終了
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic

確認メッセージ制御

'OFF
Application.DisplayAlerts = False

'ON
Application.DisplayAlerts = True
ABOUT ME
ゼノン / Xenonhyx (管理人)
愛知県出身。趣味は自作PCとゲーム。 略歴:エンジニア兼マーケター→フリーライター→エンジニア

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です