星くんはマクロを呼び出す場所を探し、2つのマクロを穴が開くほど見つめます。
「ブックを開いて編集するマクロにある、"セルA1に開いたよ!の文字列を入力する"ってなんだよ…
なんでこんな"変な処理"をさせてるんだ??
…ああ…そうか、八木がブックを開いたらこうしろっていったんだっけ………ん…んんん!?」
その瞬間、星くんの脳裏に、稲妻のようなひらめきが走りました!
「…そうか!!開いたブックに対して行う処理は、この部分に記述すればいいんだ!
…ひょっとして八木は、そのことに気づかせるためにあえて、
こんな意味のない処理を作らせたんじゃないか?
…つまりここに、追加アイテムのチェックをしたり、印刷するかしないかの確認をする、
処理を記述すればいいんだよ…!!」
星くんの心臓がドクドクと高鳴ります。
カタカタとキーボードをたたきVBEのコードを修正すると、星くんはウンとうなずきました。
'ブックを開いて編集するマクロ
Sub Main()
Dim bkPath As String
'変数に対象ブックのパスを格納する
bkPath = Application.GetOpenFilename("Excel ブック,*.xls")
'パスが格納されているとき以下を実行
If bkPath <> "False" Then
'対象のブックを開く
Workbooks.Open bkPath
'追加アイテムをチェックする
Call CheckNewOrderItem
'ブックを閉じる前に印刷するか確認する
'対象のブックを閉じる
ActiveWorkbook.Close True
End If
End Sub
'追加アイテムをチェックするマクロ
Sub CheckNewOrderItem()
Dim i As Long
Dim j As Long
Dim Hantei As Boolean
'変数の値を初期化する
Hantei = False
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
For j = 2 To Cells(Rows.Count, 3).End(xlUp).Row
If Cells(i, 1) = Cells(j, 3) Then
'変数に"True"を代入する
Hantei = True
Exit For
End If
Next j
If Hantei Then
'変数の値を"False"に戻す
Hantei = False
Else
'セルの背景色を変える(チェックする)
Cells(i, 1).Interior.ColorIndex = 6
End If
Next i
End Sub
「これでいいんだよ!
ブックを開いたら、まず追加アイテムをチェックする。
これは、追加アイテムをチェックするマクロを呼び出すだけだから、"Call プロシージャ名"でオッケーだ!
呼び出すマクロが追加アイテムをチェックするマクロだとわかるように、
プロシージャ名を"Test"→"CheckNewOrderItem"に変更…
"Call CheckNewOrderItem"の処理を追加する…。
ついでに呼び出し元のプロシージャ名も、"Test"→"Main"に変更して
メインのマクロだとわかるようにしておこう。
…印刷の処理は………とりあえず後回しにするか」