お世話になります。
VBAの勉強を始めたばかりです。
今初めてプログラムを作っています。
そこでひとつ疑問が有るのですが、変数の宣言で「Dim As 」の表示ルールですが
例えば
疑問1 宣言の位置
Sub test1()
Dim aaa As Singl
For i = 1 To aaa
・
Next
End Sub
と
Dim aaa As Singl
Sub test1()
For i = 1 To aaa
・
Next
End Sub
には何か違いは有りますか?
疑問2 宣言の重複
Sub test1()
Dim aaa As Singl
For i = 1 To aaa
・
Next
・
・
・
Dim aaa As Singl
For i = 1 To aaa
・
Next
End Sub
各処理のプログラムごとに変数を宣言することは出来ますか?また、出来たとして弊害は考えられますか?
お恥ずかしい質問で申し訳ありませんが宜しくお願いします。
No.3ベストアンサー
- 回答日時:
No.2 のお礼について
「変数名が何だったか解らなくなるので」ならば「'Dim aaa As Singl」のように頭に「'」をつけてコメントにしてしまえば何度書いてもいいです。
ただ、Excel VBA の場合、変数名に日本語が使えるのでそれを利用すると良いと思います。
個人的には「Dim Lng_行 As Long」のようにするようにしています。
・頭3文字は変数型の略語を使う → どんな変数型かがいつでも判る。型ごとに同じ名前が使える。
・頭1文字は大文字、次からの2文字は小文字にする → プログラム部分では全て小文字入力する事によって、ミススペルすると頭が小文字のままなのでデバックが楽になります。
・アルファベット、アンダーバーに続いて日本語を使う → 圧倒的に可読性が高くなる。定義済みの物と被る可能性が無い。
欠点は入力に時間がかかる事でしょうか?でもその分コメントを書く必要が減るのでメリットはかなりあると思っています。
GooUserラック さん
ご回答有難う御座います。
「'」をつけてコメントや表示の仕方をもっと工夫してみます。
「アンダーバーに続いて日本語」とても使い勝手が良さそうです。VBAに慣れるまでとりあえず四苦八苦してみます。貴重なご提案有難うございました。
No.2
- 回答日時:
No.1 のお礼について
「疑問1」は別物です。例えば以下の場合、「test1」は何度実行しても「1」と表示されますが、「test2」はどんどん数が増えていきます。
また「test2」「test1」「test2」「test1」「test2」の順に実行すると「1」「1」「2」「1」「3」と表示されます。
----------------------------------------------------------------------
Option Explicit
Dim a As Long
Sub test1()
Dim a As Long
a = a + 1
MsgBox (a)
End Sub
Sub test2()
a = a + 1
MsgBox (a)
End Sub
----------------------------------------------------------------------
すみません。「疑問2」について何も答えていませんでしたね。こちらはエラーになります。
GooUserラック さん
ご回答有難う御座います。
疑問1
なんとなく解りました。
「test1」では変数を毎回宣言するので「a」はその度に「0」になる。
「test2」では変数を最初に宣言するがその後は宣言しない為「a」は「0」から「1」づつ増える事になる。
と言う事ですね。
疑問2
有難う御座います。やはり無理ですか。
よく変数名が何だったか解らなくなるので作っている関数で使う変数を毎回書ければと思った次第です。
ご教授有難う御座いました。
No.1
- 回答日時:
「Sub」~「End Sub」の外に書いた場合は、そのモジュールの共通のものになります。
「Sub」~「End Sub」の中に書いた場合は、その「Sub」~「End Sub」内だけのものになります。
両方同じものが有った場合は「Sub」~「End Sub」の中に書いたが優先になります。
GooUserラック さん
ご回答有難う御座います。
疑問1の方は一つの「Sub」~「End Sub」の場合はどちらでも同じと言う事ですか?
疑問2の方は一つの「Sub」~「End Sub」の中にある場合なのですが不具合は無いでしょうか?
ややこしい質問で申し訳ありません。
宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数の宣言について
-
Excelで曜日を表示させると、「...
-
ロンダートをマスターしたい
-
ディレクトリを区切るダブルス...
-
寝バックした時奥まで入りませ...
-
TMN宇都宮隆さんの声がEXPO以降...
-
ダンスの立ち位置がいつも端
-
真珠夫人の最終回を見逃してし...
-
和を乱す or 輪を乱す
-
たらたらたらたーたらたらたら...
-
NA・NA・NA~ NA・NA・NA~、
-
韓国の歌手「Rain(ピ)」のMVは...
-
ラストダンスの意味・使い方
-
エッチな罰ゲーム
-
ダンス動画の反転バージョンと...
-
マツケンサンバIIのサンバのス...
-
バレエ教室を辞めさせられました
-
この曲名を教えてください!
-
高一女子です。 ダンス部に所属...
-
ダンスの位置がいつも1番後ろの列
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで曜日を表示させると、「...
-
エクセルにて、右から最初のス...
-
ディレクトリを区切るダブルス...
-
OpenofficeのCalcの文字列の並...
-
ACCESSのフォーム上に連番番号...
-
OS 10.4/ 保存先のパスを指定す...
-
ロンダートをマスターしたい
-
バク転の恐怖心
-
Excel VBA
-
古い歌の歌手と歌詞
-
寝バックした時奥まで入りませ...
-
和を乱す or 輪を乱す
-
たらたらたらたーたらたらたら...
-
古典 動詞の訳し方
-
ダンスの立ち位置がいつも端
-
私は女子大生です。裸を見せた...
-
エッチな罰ゲーム
-
TMN宇都宮隆さんの声がEXPO以降...
-
NA・NA・NA~ NA・NA・NA~、
-
曲名が知りたいです!! とぅと...
おすすめ情報