自分のメモ用に、更新情報に上がって来ないよう過去のnoteをこっそり編集。
■セル操作
セルの指定
【使用例】
Cells(1, 1)、Cells(1, "A")
Rows(5)、Rows("1:5") ※1行のみは数値そのまま、複数行は""で囲む
Columns(3)、Columns("C")、Columns("A:C")
※Rangeを使うのは、固定位置のセルの場合・セル範囲(複数セル)の場合・名前定義を使う時
Cellsを使うのは、単一(1つの)セルを指定する場合
(複数セルであるセル範囲や名前定義をCellsで指定することはできない)
セルの指定
各シートのA1へのハイパーリンク作成
フォントの色
セル指定.Font.Color = vbRed
フォントのサイズ
セル指定.Font.Size = 14
セルの色
セル指定.Interior.Color = vbRed
セルの表示形式を数字にする
セル指定.NumberFormatLocal = "\#,##0"
セルの縦位置
セル指定.VerticalAlignment = 位置
※中央揃え:xlCenter、下揃え:xlBottom
罫線
セル指定.Borders>LineStyle = xlContinuous
※xlContinuousは実線
削除
セル指定.ClearContents
※Deleteキーを押す操作
全選択
セル指定.CurrentRegion
※Ctrl+Aと同じ範囲
※カレント リージョンと読む
タイトル行を残して値のクリア
コピペ(関数も書式もそのまま)
セル指定.Copy セル指定
コピペ(値のみ)
セル指定.Copy
セル指定.PasteSpecial Paste:=xlPasteValues
コピペ(書式)
セル指定.Copy
セル指定.PasteSpecial Paste:=xlPasteFormats
値貼付け
セル指定.PasteSpecial xlPasteValues
※略さずに書くと
セル指定.PasteSpecial Paste:=xlPasteValues
並べ替え
セル指定.Sort key1:=キー名, order1:=順番,header:=見出しとして使うか
※昇順:xlAscending/降順:xlDescending
オートフィルタ
セル指定.AutoFilter field:=列番号, Criteria1:=抽出条件
※「クライテリア」って読む
※列番号はA列からの列番号ではなく、オートフィルタの範囲の列番号
並べ替え
セル指定.Sort key:=セル指定, order1:=順序, Header:=xlYes
小数点以下の書式設定
セル指定.NumberFormatLocal = "0.00"
塗りつぶしなし
Interior.Pattern = xlNone
塗りつぶし
Interior.Color = 色
アクティブセル番地の取得
ActiveCell.Address
※単一セルのアドレス。そのままだと絶対参照になるが、
Address(False, False)
にすると相対参照になる
アクティブセル範囲番地の取得
Selection.Address
※単一セルかセル範囲のアドレス。そのままだと絶対参照になるが、Address(False, False)
にすると相対参照になる
セルの選択
乱数の生成
Rnd
■行操作
行番号取得
Rangeオブジェクト.Row
最終行取得
行の自動調整
行指定.AutoFit
行削除
行指定.Delete
一行おきに行削除
■列操作
列の自動調整
列削除
列指定.Delete
一列目の値を削除
列を項目名で指定
Range("定義した名前").Column
Cells(3,Range("漢字名称").Column)
※項目名が入力されているセルに、名前の定義をしておく
列番号取得
Rangeオブジェクト.Column
■シート操作
全シート数
シート名指定
シートのオブジェクト名取得
他のブックのシートのオブジェクト名を探す
全シート名取得
シート追加
追加したシートの名前変更
シート選択
シート削除
目印を付けたシート以外を削除
シートの値クリア
シートの存在確認
シート操作シートが存在しなければ生成
シートの名前を順番に取得
シートの名前を順番に取得(Forで書くなら)
■ブック操作
ブックの新規作成
Workbooks.Add
ブックを開く
Workbooks.Open Filename:=フルパス
ブックの保存
ブック指定.Save
ブックを閉じる
ブック指定.Close
保存しないで閉じる
Workbooks("ブック名") SaveChanges:=False
保存して閉じる
Workbooks("ブック名") SaveChanges:=True
※Openはフルパス指定できるけど、Closeはブック名のみかWorkbookでないとだめ。
なので、OpenするときにWorkbookにSetしておく。
相対パス
ThisWorkbook.Path
ブックのフォルダパス取得
ブック指定.Path
ブックのフルパス取得
ブック指定.FullName
ブックの名前を調べる
ファイルの保存をしたか
ActiveWorkbook.Saved
プロジェクトのThisWorkbookをダブルクリック
→Workbookを選択
→勝手にできたプロシージャは無視して、BeforeCloseをクリック
→できたやつに書く。勝手にできたOpenのは削除してOK
■分岐
If Else
Dim i As Long
For i = 1 To 最大値
If 条件式1 Then
処理
ElseIf 条件式2 Then
処理
Else
処理
End If
Next i
End Sub
Select Case
Select Case テスト式(trueとか変数名とか)
Case 条件1
処理
Case 条件2
処理
Case 条件3
処理
Case Else
処理
End Select
For Eachで「もしこの文字が含まれていたら」
For Each コレクション
If InStr(調査対象, "検索文字") Then
処理
Else
処理
End If
Next cell
■繰り返し
For Next
For 条件
繰り返す処理
Next
Do While
DO While 条件
繰り返す処理
Loop
※条件に一致している間、処理を繰り返す
繰り返し(コレクション)
For each 変数名 In コレクション
繰り返す処理
Next 変数名
開いたブックを変数に入れる
Set 変数名=Workbook.Open(ThisWorkbook.Path & "\data\" & wbName)
■フォルダ操作
フォルダ作成
MkDir
フォルダ内のファイルを取得(FSO)
フォルダ内のファイルを取得(FileDateTime関数)
■プロシージャ操作
Subプロシージャを呼び出す
Sub プロシージャ名()
Call 呼び出すSubプロシージャ名(渡す引数)
End Sub
Sub 呼び出されるプロシージャ名(引数の型の宣言)
処理
End Sub
Subプロシージャには、戻り値がない。
省略したときは、参照渡しのByRefになる。
基本は値渡しのByValを使うので、省略したのかあえてなのかわからなくなるため、ByRefも省略せずに書く。
Functionプロシージャを呼び出す
Sub プロシージャ名()
呼び出すFunctionプロシージャ名(渡す引数)
End Sub
Function 呼び出されるプロシージャ名(引数の型の宣言) 戻り値の型の宣言
処理
End Function
Functionプロシージャ名と戻り値の変数名は同じにしておく。
■メッセージボックス
メッセージボックス表示
MsgBox
戻り値のない MsgBox はカッコ不要。
MsgBox(マクロ実行確認)
■VBA関数
数値に変換する
CLng(Me.オブジェクト名.Text)
■ワークシート関数
Vlookup
数値を四捨五入
WorksheetFunction.Round(セル指定)
■印刷
印刷する
PrintOut
PDFにする
ExportAsFixedFormat Type:=xlTypePDF,Filename:=変数名
※変数名はString
■調査
データ型を調べる
TypeName(対象)
■変数
定数の宣言
Const 定数名 As データ型 = “定数に格納する値”
■フォーム操作
フォームの起動
フォームのオブジェクト名.Show
フォームを閉じる
コンボボックスの選択肢
Me.オブジェクト名.AddItem "選択肢"
■お約束の便利コード
画面更新の停止
確認メッセージを表示しない
コピー中の点線を消す
実行を止める(テスト時)
Stop
Stop だけでもOKだけど、
If i=120 Then Stopでiが120ときに止められる
ダブルクリックでセルの編集を無効化
Cancel = True
数値じゃなかったら「数値じゃない」と入力
■日時取得
現在日付取得
現在時刻取得
■文字操作
文字列を区切り文字で区切る