スポンサーリンク

エクセルマクロのメモ

ファイル操作

ファイル出力

'出力ファイルを定義
Dim datFile As String
datFile = ActiveWorkbook.Path & "\test.txt"
'ファイルオープン
Open datFile For Output As #1
'ファイル書込み
Print #1, "test"
'ファイルクローズ
Close #1

シート操作

シートをアクティブにする

Sheets("Sheet1").Activate

シートをクリアする

Sheets("Sheet1").Cells.Clear

ワークシート削除

'確認メッセージを一時的にOFF
Application.DisplayAlerts = False
'シートを削除
Sheets("Sheet1").Delete
'確認メッセージをON
Application.DisplayAlerts = True

セル操作

セル領域をクリア

'セル領域をクリア
Range("A10:B10000").Clear
'別の書き方
'Range(Cells(10, 1), Cells(10000, 2)).Clear

セルの最終行、最終列を取得

'最終行の取得
lastRow = Cells(Rows.Count, 1).End(xlUp).Row

'最終列の取得
lastColumn = Cells(1, Columns.Count).End(xlToLeft).Column

セル内改行がある場合のデータ取り出し

UserNameArray = Split(UserName, vbLf)
UserName = UserNameArray(0)

見出し行を残してシートのデータをクリアする

'A1から、全選択(CurrentRegion)して、選択範囲を2行下にずらして(offset)クリア
Sheets("Sheets1").Range("A1").CurrentRegion.Offset(2, 0).Clear

変数

変数定義時に初期値も設定

Dim AAA As Integer: AAA = 5

パブリック変数

'プロシージャで共通の変数を利用する場合、Subの外側で変数宣言する
Dim tgesUserColNo As Integer

'モジュール間で共通の変数を利用する場合は、publicで宣言する
Public tgesUserColNo As Integer

'定数の場合は
下記のように記載
Const SheetNameMain As String = "Sheet1"
Public Const SheetNameMain As String = "Sheet1"

演算子

否定の書き方

'Notを用いた否定
If Not IsNumeric(passSeed) Then
End If

インクリメント

i= i + 1

配列

配列の定義

Dim testArray(50) As String
testArray(0) = "aaa"

配列を関数に渡す

Sub main()
    Dim userData() As String
    userData(0) = "aaa"
    Call outputUserData(userData)
End Sub

Sub outputUserData(userData() As String)
    MsgBox userData(0)
End Sub

配列を関数の戻り値とする

Sub main()
    Dim returnArray() As String
    returnArray = makeData()
End Sub

Function makeData() As String()
    Dim testArray(50) As String
    testArray(0) = "aaa"
    makeData = testArray()
End Function

ロジック

ループ処理

'For文
    For i = 8 To lastRow
Next
※ほかにもDo~While、Do~Untilが利用できる
'For each文
'variant型のVarの宣言を省略している
For Each Var In userDataArray
Next Var

Exitで処理を途中で抜ける

Exit Sub:Sub 関数を抜ける
Exit Function:Function 関数を抜ける
Exit Do:Do 文を抜ける
Exit For:For 文を抜ける

改行コード

CrLfの改行コードの場合「vbCrLf」となる。
ただし、セル内の改行コードは「vbLf」となる。

文字列操作

文字の切り出し(末尾の1文字を削除)

'文字の切り出し
AAA = Left(文字列, 切り出す文字数)

'末尾の1文字削除
AAA = Left(AAA, Len(AAA) - 1)

文字列置換

'文字列から/を削除
birthdate = Replace("1980/04/01", "/", "")

対象文字列が含まれるか判定

'InStrは検索文字列が存在する位置を返す
If InStr(sexString, "男") > 0 Then
    sexCode = "man"
End If

設定関連

デバッグ、ダンプ

1.「ローカルウィンドウ」を表示させる
オブジェクトに入っている値を自動で出してくれるっぽい。

2.「ウォッチウィンドウ」を表示させる
ダンプしたい変数を右クリック、「ウォッチ式の追加」で追加する。
ブレークポイントを設置して処理を止めると、その時の変数の中身が確認できる。

自動構文チェックを外す

マクロ画面の「ツール」「オプション」「自動構文チェック」のチェックを外す

変数の宣言を強制とする

マクロ画面の「ツール」「オプション」「変数の宣言を強制する」のチェックをつける

その他

ボタンを挿入する

「開発」タブ-「挿入」-ボタン

subとfunctionについて

sub:戻り値がない
function:戻り値がある
Sub BBB(data As String)
End Sub

'呼び出し
Call BBB
Function AAA(data As String) As Integer
    AAA = 1;
End Function

'呼び出し
userData = AAA("test")
タイトルとURLをコピーしました