【Microsoft Excel】マクロ構文


MSGBOX("TEST")

"TEST"と表示(JSのalertみたいなかんじ)

デバッグ用の状況表示によく使う。

あとは終わったかどうかわからないマクロの終了を告げるため等。

 

ワークシートセル内ループ処理

①Dim wk_idx As Integer

②Set WS = Thisworkbook.worksheets("Sheet1")

③wk_idx = 1

④Do While WS.cells(wk_idx , 1).value <> ""

⑤ ' 処理を記述

⑥ wk_idx = wk_idx + 1

⑦Loop

シート内セルの簡易ループ走査。 For使うやり方とかあるけど、 実際のところ大体こんなもんで事足りる

①:走査用の変数(行番号を指定する用)を定義

②:ワークシートオブジェクトを取得

worksheetsの引数にはシート名を指定する

この例では「Sheet1」

③:走査用変数の初期化。

1行目から始めるのでwk_idx = 1

④:前判定whileの開始。

脱出条件は”A列セル内の値が空文字(空白)だったら”

逆に言うと空文字が見つからない限り無限ループする

⑤:なんか処理を書く

別シートへの転記とか、ファイルへの書き出しとかだろう。

⑥:走査用変数のカウントアップ

これ忘れるとA1セルから先に進まないので無限ループになる

(個人的によく忘れるので、そうするとEXCEL皆殺しする羽目に陥る)

⑦:Loopおわり

 

簡易ファイル出力

①Dim ff As Integer

②Dim fn As String

③ff = FreeFile

④fn = "D:\work\test.txt"

⑤Open fn For Output As #ff

⑥Write #ff , "Test"

⑦Close #ff

ファイル出力の簡易例。

①:出力ファイル番号受け取り用変数を定義

②:出力ファイル名設定用変数定義

③:出力ファイル番号設定

④:出力ファイルパス(絶対パス)設定

この例ではD:\work\test.txtに書き出す。

⑤:出力ファイルを書き込みモード(Write)で開く

ちなみに追記モードはFor Outputの部分をFor Appendにする

⑥:"Test"と書き出す

ちなみにWriteだと書き込む文字列がダブクォ(")で囲われて出力される

Print #ff , "Test"だとダブクォはつかない。

⑦:ファイルを閉じる