LoginSignup
0
0

【忙しい人のためのVBA】シート名を変数にしたい

Last updated at Posted at 2021-04-02

今回、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についてほぼ知りたいことが載ってます。いつもお世話になっています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0