最近初めてExcelのマクロを触りました。
初歩的なことから調べたので、メモ書きを残します。
※初心者の記事のため、誤り・もっと良い書き方があるかもしれません。お気づきの点はご指摘お願いいたします。
ファイル出力
出力したい先のパス(~\XXX\)+ファイル名(mmm.sql)で出力
※今回はsqlファイルを出力したかったので.sql 別の拡張子でも可?
ファイルパス = "~\XXX\mmm.sql
Open ファイルパス For Output As #1
Print #1, "ファイルに記載したい内容"
Close #1
Excelのファイルからマクロで.sqlファイルを生成する #ExcelVBA - Qiita
Excel VBA:テキストファイルへ書き込み|Open For Output As
戻り値
Functionでのみ使用可能。
関数名に値を入れる、呼び出し元で変数に入れることで使用可能
Sub test()
Dim hoge
hoge = sample()
MsgBox hoge
End Sub
Function sample()
sample = "test"
End Function
【VBA】Functionの使い方【戻り値の取得、複数の引数や配列を渡す】
条件分岐
If,caseが使えることは確認した(これしか使ってない)
Sub sample()
If hoge <> "" Then
MsgBox "hogeは空じゃない"
Else
MsgBox "hogeは空!"
End If
select case hoge
case "朝"
MsgBox "朝だよ"
case "昼"
MsgBox "昼だよ"
case Else
MsgBox "日が暮れたよ"
end select
End Sub
【Excel VBA入門】Select Case文の使い方。複数条件をスッキリ書く! – Valmore
セル取得
RowとかColumnの取得がしたいとき、これで取れる
Findと組み合わせて、特定のセルと同じ内容のセルを探す・・・とかもできる、そのRow取得とか(サンプル)
※Findで見つからなかった場合はNothingになる。Find内の細かい設定オプションはリンク先参照
Sub sample()
Dim hoge
Dim fuga
hoge = workbook.Worksheets("Sheet1").Range("A3")
'Excelの「Sheet1」シートのA3セルがhogeにとれた状態
MsgBox hoge.Row
'取得したセルのRowを出力(3)
MsgBox hoge.Column
'取得したセルのColumnを出力(A)
fuga = workbook.Worksheets("Sheet2").Range("B3:B20").Find(What:hoge)
'Excelの「Sheet2」シートのB3~B20セルで、A3と同様の内容のセルを取得する
MsgBox fuga.Row
'取得したセルのRowを出力
MsgBox fuga.Column
'取得したセルのColumnを出力
end sub
【VBA】Rangeの行、列、行数、列数を取得【Row、Column、Countを使う】
【Excel VBA入門】Findメソッドで条件に一致するセルを検索する方法 – Valmore
未入力チェック
記載した内容を使って処理するものは入力チェックが必要だよね~ってあとから追記しました
Excel VBA 入力が必要なセルが未入力の場合メッセージを出す
文字列操作系
javaのsubstringぽいものはなさそうなので、Replaceを駆使した
Sub sample()
Dim hoga
hoga = Replace("Hello World!","World","")
'Worldを取り除く
MsgBox hoga 'Hello !
hoga = Replace("Hello World!","World","everyone")
'勿論置換もできる
MsgBox hoga 'Hello everyone!
hoga = Replace("World World World!","World","everyone",2,1)
'置換の位置指定(この場合は真ん中のWorldだけ置換
MsgBox hoga 'World everyone World!
end sub
【VBA】Replace(置換)をマスター!基本と応用テクニック – COMMAND LAB -TECH
VBA関数(文字列操作,Replace,InStr,StrConv)|VBA入門
Excel VBAで文字列の切り出しを行う:Left, Right, Mid | UX MILK
ループ系
繰り返し処理(For Next)|VBA入門
EXCEL VBA 繰り返し処理の使い分け(For Next・Do While Loop・Do Until Loop)
ワイルドカード
Like判定でワイルドカード使えば一部合致するものとかで条件作れる
【VBA】文字列をLikeで判定【ワイルドカード、Notを使う】