2010年12月24日金曜日

演習SP11-2の解答

演習SP11-2の解答を示します.

マクロの表示→編集 で英単語で記入された文書が表示されます.これは作成したマクロ全てを記入しています.それぞれのマクロに名前を付けてきました.仮にその中の1つのマクロ名を「まくろ」とすると,そのマクロ「まくろ」の操作を記述しているのは,

Sub まくろ()

 から

End Sub 

の範囲です.


プリントの通り作業を行っていったとすると,
「氏名住所記入」マクロ実行

「郵便番号記入」マクロ実行

「印刷」マクロ実行

「改行」マクロ実行

という流れを記録したマクロを作成したはずです.

この流れを記録したマクロを「連続印刷」という名前としたとすると,文書の中に
Sub 連続印刷()
 ~
 ~ 
 ~
End Sub 
という部分があると思います.そしてSuB 連続印刷()からEnd Subの間には流れで実行するマクロ分のApplication.Run "~.xlsm![マクロ名]"という記述があると思います.

それらを,
Do Until ActiveCell.Value=""

Loop
ではさんでください.

この記入する文字列の意味は「選択されたセルの中身が"",つまり空だったら繰り返しをやめる」です.つまり,「選択されたセルの中身に記入がある限り繰り返す」という意味でもあります.

この記述により,「改行」マクロが実行された直後に選択されたセルに記入がある限り印刷を繰り返し,「改行」マクロが実行された直後に選択されたセルに記入が無かった場合,つまり選択されたセルである住所録の名前項目に記入が無くなった瞬間に「連続印刷」マクロを終了します.

選択されたセルである住所録の名前項目に記入があった場合は,「氏名住所記入」マクロ実行→「郵便番号記入」マクロ実行→「印刷」マクロ実行→「改行」マクロ実行,を実行し,最後の「改行」実行後,次の行の名前項目を選択します.


具体的には,

Sub 連続印刷()
'
' 連続印刷 Macro
'
' Keyboard Shortcut: Ctrl+~
'
Do Until ActiveCell.Value=""
Application.Run "年賀はがき宛名.xlsm!氏名住所"
Application.Run "年賀はがき宛名.xlsm!郵便番号"
Application.Run "年賀はがき宛名.xlsm!印刷"
Application.Run "年賀はがき宛名.xlsm!改行"
Loop
End Sub


という風になります.
書きかえた状態で連続印刷マクロを保存したい場合は,「ファイル」→「~を上書き保存」してから「MicrosoftVisualBasic」ウィンドウを閉じてください.

0 件のコメント:

コメントを投稿