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

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