今回、MsgBoxの選択を利用して指定しています。
超初心者向けの説明をコードの下に記述しておきますので、参考にしてください。
コード
Sub update_data()
Dim rtn As Integer
Dim ws As Worksheet
rtn = MsgBox("Aの時は「はい」" & vbLf & "Bの時は「いいえ」" & vbLf & "を選択してください", 3, "マクロ実行の確認")
Application.ScreenUpdating = False '画面更新をしない
Select Case rtn '押されたボタンの確認
Case vbYes 'はい選択
Set ws = Sheets("A") 'シートAを引数に
Call マクロ(ws)
ws.Select 'シートAを開く
Case vbNo 'いいえ選択
Set ws = Sheets("B") 'シートBを引数に
Call マクロ(ws)
ws.Select 'シートBを開く
Case vbCancel 'キャンセル選択
MsgBox ("キャンセルしました")
End Select
Application.ScreenUpdating = True '画面更新する
End Sub
超初心者向け説明
定義
VBAはDimで変数を宣言します。型宣言はAs の後ろです。
シート名の宣言はWorksheetで行います。(私はここで詰まってました)
MsgBox
MsfBoxの選択、はい、いいえを利用してデータを反映する先を決定しています。
MsgBox=(説明など文字,3(はい、いいえ、キャンセルのボックス),タイトル)
の記述になっています。
ちなみに、& vbLf & は改行です。これはオートフィルがされないので半角スペースやLの大文字に注意してください。
"文" & vbLf & "文"
というコードでは記述をしています。
分岐
Caseで分岐です。
vbYesがはい、vbNoがいいえ、vbCancelがキャンセルです。
処理を行うときはその分岐の下に記述します。
シート名の指定にはSet ws = Sheets(シート名) です。
少し特殊な指定のためSetが必要です。
Callはほかのマクロを呼び出すことができます。
必要に応じたマクロを用意しましょう。
()は引数です。
渡す先はSub マクロ(ByVal ws) としておきます。
ByValはwsの値を変更しない。という指定です。
作業をしたシートを開きたい場合、Selectしておくと開くことができます。
分岐の終わりにEnd Select を入れれば完了です!
その他
Application.ScreenUpdating
の指定で作業中の更新を止めることができます。
マクロ実行時、かなりスムーズに終わるのでお勧めです。(私のパソコンはメモリがきつきつなので利用してます)
' でコメントアウトです。
参考
VBAについてほぼ知りたいことが載ってます。いつもお世話になっています。