効率良く変数を宣言する方法についてご質問したく、
掲載いたしました。
同一モジュールの別プロシージャにおいて、
同じ変数名を使用したいと思っております。
その場合、モジュールレベルでの変数宣言などが方法の一つとして
あるかと思いますが、
モジュールレベルの宣言はコードが読みにくくなるなど
デメリットも多く私自身もあまり使いたいと思いません。
しかし同一モジュールの別々のプロシージャで同じ変数名を使用し同じ内容を定義することを繰り返すのも効率的ではないと思っております。
ただ私自身では解決方法が見つからず、何かご教授いただければと思い、質問いたしました。
まず以下に現状のサンプルコードを記載致します。
VBA
1Sub msg1() 2dim aaa as string 3aaa = "AAA" 4MsgBox aaa 5End Sub 6 7Sub msg2() 8dim aaa as string 9aaa = "AAA" 10MsgBox aaa 11dim ccc as string 12ccc = "CCC" 13MsgBox ccc 14End Sub 15 16Sub msg3() 17dim bbb as string 18bbb = "BBB" 19MsgBox bbb 20dim ccc as string 21ccc = "CCC" 22MsgBox ccc 23dim eee as string 24eee = "EEE" 25MsgBox eee 26End Sub
現状のコードとしては以上となります。
冒頭でも述べた通り、このコードですと、
複数のプロシージャで同じ変数名で同じ内容を定義していますので
(例えば、msg1とmsg2ではaaaが被っている)、
このようなところを一緒にできないかと思いました。
何か関数などにして一気に宣言と定義を処理してしまい、
各プロシージャでは関数を呼び出すだけで、
その後は変数名だけをプロシージャに記述すれば
変数を使える関数などつくれるのではないか?と淡く思いました。
しかし私自身モジュールレベルの宣言を使う方法しか思いつかず、
モジュールレベルの宣言にはデメリットも多いので、
できることなら使用することを控えたいと思っております。
参考になるかは分かりませんが、私がモジュールレベルの宣言を使って
変数の宣言、定義をひとまとめにしたコードを以下に記載いたします。
VBA
1Dim aaa As String 2Dim bbb As String 3Dim ccc As String 4Dim ddd As String 5Dim eee As String 6 7Sub DimDim() 8aaa = "AAA" 9bbb = "BBB" 10ccc = "CCC" 11ddd = "DDD" 12eee = "EEE" 13End Sub 14 15Sub msg1() 16Call DimDim 17MsgBox aaa 18End Sub 19 20Sub msg2() 21Call DimDim 22MsgBox aaa 23MsgBox ccc 24End Sub 25 26Sub msg3() 27Call DimDim 28MsgBox bbb 29MsgBox ccc 30MsgBox eee 31End Sub
重ねてにはなりますが、
上記コードの
VBA
1Dim aaa As String 2Dim bbb As String 3Dim ccc As String 4Dim ddd As String 5Dim eee As String 6 7Sub DimDim() 8aaa = "AAA" 9bbb = "BBB" 10ccc = "CCC" 11ddd = "DDD" 12eee = "EEE" 13End Sub
この部分をモジュールレベルの宣言を使用するのではなく、
より効率的なコードにできればと思っております。
長文となり、分かりにくい部分も出てしまったかと思いますが、
何卒よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/25 12:25
2021/08/25 17:15 編集