Excel VBAでアクティブなブック名とシート名を変数に格納
ここでは、エクセルVBAで現在アクティブになっているWorkbook名とWorksheet名を簡単に変数に格納する方法を解説します。
これでアクティブなエクセルブックやシートの名前を簡単に変数に入れられるようになりますよ。
1.変数に格納するメリットは?
まずは、Workbook名やWorksheet名を変数に格納するメリットを確認しましょう。
ワークブック名やワークシート名を変数に格納した場合のメリットは、「コードを書く手間が省ける」ことです。
では2つを比較してみましょう。
まずはワークブック名とワークシート名をその都度そのまま入力した場合からです。
sub 名前そのまま()
'ワークブック「平成31年度患者情報」のワークシート「入院情報」のA列の最終行数を変数『bt_maxrow』に格納しようとしているコード
Dim bt_maxrow As Long
Workbooks("平成31年度患者情報").Worksheets("入院情報").Activate'①
bt_maxrow = Workbooks("平成31年度患者情報").Worksheets("入院情報").Range("A" & Rows.Count).End(xlUp).Row'②
End Sub
では次に、同じ内容のコードでワークブック名やワークシート名を変数にした場合を見てみましょう。
sub 名前変数()
'「名前そのまま」と同じ内容のコード
Dim bt_maxrow As Long
x.Activate'①
bt_maxrow = x.Range("A" & Rows.Count).End(xlUp).Row'②
End Sub
分かりやすいよう変数を「x」としましたが、コードの量が明らかに減っているのが分かると思います。
このようにワークブック名やワークシート名を変数に格納することでコードが短くなるというのが実感できると思います。
なおコードを短くするためには「With」を使う方法、「Activesheet」を使う方法、ワークブックは省略する方法などいくつか方法はあります。
しかし「Withは慣れないとエラーが出やすい」ですし、「Activesheet」を使う方法やワークブックを省略する方法は「意図しないワークブックを選択する可能性」があって危険です。
そのためやはりその都度ワークブック名を指定した方がよく、それでもコードを短くするために「ワークブック名やワークシート名を変数に格納する」のが一番良いのです。
2.簡単に変数に格納するには?
では次に、アクティブなワークブックの名前とワークシートの名前を変数に登録するコードを紹介します。
sub テスト()
Dim bookname1 As Variant
'①アクティブなブックの名前を入れる変数を用意
bookname1 = ActiveWorkbook.Name
'②アクティブなブックの名前を変数に格納
Dim sheetname1 As Variant
'③アクティブなシートの名前を入れる変数を用意
sheetname1 = ActiveSheet.Name
'④アクティブなシートの名前を変数に格納
Dim x As Worksheet
'⑤アクティブなブックとシートの組み合わせを入れる変数を用意
Set x = Workbooks(bookname1).Worksheets(sheetname1)
'⑥アクティブなブックとシートの組み合わせを変数に格納
end sub
上のコードでは、
① ワークブック用の変数を宣言
② アクティブなブック名を変数に格納
③ ワークシート用の変数を宣言
④ アクティブなワークシート名を変数に格納
⑤ ②と④の組み合わせ用の変数を用意
⑥ ②と④の組み合わせを変数に格納
ということをしています。
コピーして使ってくださいね。
参考になれば幸いです。
【口コミ・評判のいいExcel本の紹介】