お世話になります。
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で質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
wwwありとwwwなし・・・どうす...
-
ダンスの立ち位置がいつも端
-
Queen の"We Will Rock You"のR...
-
ラストダンスの意味・使い方
-
たらたらたらたーたらたらたら...
-
和を乱す or 輪を乱す
-
曲名が知りたいです!! とぅと...
-
私は女子大生です。裸を見せた...
-
中森明菜さんはそんなに歌うま...
-
フェアリーズは、なぜあまり売...
-
寝バックした時奥まで入りませ...
-
朝という言葉から連想すること...
-
NA・NA・NA~ NA・NA・NA~、
-
ダンスの位置がいつも1番後ろの列
-
マツケンサンバIIのサンバのス...
-
ウォウォウォウォっウォっウォ...
-
ダンス動画の反転バージョンと...
-
Pot-Pourri - Rivers of Babylo...
-
バレエ教室を辞めさせられました
-
曲を探してます。 覚えてる歌詞...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで曜日を表示させると、「...
-
ディレクトリを区切るダブルス...
-
エクセルにて、右から最初のス...
-
amazonアソシエイトについて
-
アゲハチョウの待ち受け
-
曜日をによって自動的に文字を...
-
陸上競技
-
ファミリーマートのaaa一番くじ...
-
ブレイクダンス
-
Excel2003で日付と曜日を連続作...
-
ブレイクダンス
-
excel2007マクロで特定URLを抽...
-
OS 10.4/ 保存先のパスを指定す...
-
wwwありとwwwなし・・・どうす...
-
ダンスの立ち位置がいつも端
-
和を乱す or 輪を乱す
-
たらたらたらたーたらたらたら...
-
ラストダンスの意味・使い方
-
私は女子大生です。裸を見せた...
-
寝バックした時奥まで入りませ...
おすすめ情報