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本の紹介】


Top