
標題の件、以下のように、宣言をして、コードを書いて下さいと
マクロのルールであります
しかし、実際に書かなくても動きます
ルールで書いたり、忘れたりするのですが、どんな目的があるのでしょうか?
⇒型を定義して宣言しているというのは理解できます
ご存じの方、教えて下さい
Dim wb As Workbook ⇒エクセルブックを宣言
Dim LastRow1 As Long ⇒最終の行番号を宣言
Dim filePath As String ⇒ファイルパスを宣言
Set wb = Workbooks.Open(filePath)
LastRow1 = Cells(Rows.Count, "A").End(xlUp).Row
filePath = "C:\Users\2020\OneDrive\マクロ\a.xlsm"
No.4ベストアンサー
- 回答日時:
変数宣言には2つの意味があります。
(1) 使う変数を限定することで間違いを減らす。
Option Explicit を指定ことで強制できる。
Option Explicit
Sub AAA()
Dim hensuu
hensu = 5 '← 宣言されてないのでエラー
hensuu = atai '← ataiが宣言されてないのでエラー
End Procedure
Sub BBB()
hensuu = 3 ← BBBの中では宣言されてないのでエラー
End Procedure
(2) 型を限定することで間違いを減らす
'Visual BasicだとOption Strict Onで型指定を強制できるが、VBAには無い
Dim LastRow1 As Long
LastRow1 = Cells(Rows.Count, "A").End(xlUp) '← .Rowを忘れているが、Cells(Rows.Count, "A").End(xlUp)はRange型なのでLong型と合わずにエラー
一方で、(1)(2)のようなものはプログラマが注意すればいい、いちいち宣言が面倒だし気楽に書きたい、等の考えもあります。
VBAは初期値では Option Explicitが未指定な状態では宣言が無くても利用できます。
上の例だと
'Option Explicit → 無し
Sub AAA()
Dim hensuu
Dim hensu '← 内部で自動で宣言される
hensu = 5
Dim atari '← 内部で自動で宣言される
hensuu = atai
End Procedure
Sub BBB()
Dim hensuu '← 内部で自動で宣言される
hensuu = 3
End Procedure
のような動作になります。
初心者には宣言は難しいでのそのまま使え、という解説サイトを見たことがあります。
私はむしろ初心者こそOption Explicitを付けて宣言を強制し、型を意識するべきだと思ってます。
No.3
- 回答日時:
変数を宣言するとメモリをこの変数用に空けといて!ってできます。
vbaだと省略してもプログラムから使われてる変数を探し出して勝手に内部的に宣言してくれます。
一見便利そうな機能ですが、変数名を書き間違えてしまうと勝手にそれが宣言されNothingとして使用されてしまうのでバグの原因になります。
1番上に「Option Explicit」と入れておけば実行時に宣言されていない変数があると「宣言されていない変数があります」って表示されて誤字に気づけますよ。
No.2
- 回答日時:
宣言はプログラミング言語として型安全などを提供するための機能です。
主に書き間違えなどを検出しやすくするためにあります。Excelマクロでは宣言しなくても動くようになっていますが、間違いを検出しにくくなるので宣言した方が良いです。
たとえば
Dim wb As Workbook
と宣言するとwbはWorkbook型と指定しているのでワークブック以外のものを間違って代入しようとすればエラー検出されますが、宣言していないと何でも代入できるのでエラーにならず、思ったのと違う誤った動きをして理由が分からないといったことになりがちです。
人間は間違いを犯しがちなので、間違っていることをコンピュータが検出しやすいように、プログラムの意図をコンピュータに伝えておくことが重要です。宣言はそういう目的で記述します。
以下、ご指南ありがとうございます
確かに、ワークブックを入れる為に作った変数に
他のものを、代入したりする可能性もありますね
⇒当該ミスを防止する為にも役立つんですね
⇒ご指南ありがとうございます
>プログラムの意図をコンピュータに伝えておくことが重要
>ワークブック以外のものを間違って代入しようとすればエラー検出されま>すが、宣言していないと何でも代入できるのでエラーにならず、思ったの>と違う誤った動きをして理由
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】アクティブセルの行のデータをクリアするマクロについて 1 2024/06/12 06:45
- Excel(エクセル) 【マクロ】VLOOKUPにて参照元にデータが無い場合【該当なし】と表示したい 3 2024/06/08 16:45
- Excel(エクセル) 【マクロ】アクティブセルにブックやシートを指定する方法 2 2024/06/12 09:10
- Excel(エクセル) 【マクロ】コードを少しでも、減らする為には 4 2025/03/18 01:15
- Excel(エクセル) 【マクロ】Call関数で呼び出した場合、共通の変数宣言は、省略できますか? 2 2025/02/09 10:17
- Excel(エクセル) 【マクロ】セルに関数を入れる場合、列を追加した後に実行すると【文字列】になってしまう 1 2024/06/09 16:41
- Visual Basic(VBA) VBA 複数の各シートに行を追加したいです 2 2024/02/28 22:09
- Excel(エクセル) 【マクロ】関数をセルに入力するも、スピルしない件 1 2024/06/09 22:15
- Excel(エクセル) 【マクロ】AブックからBブックへデータコピーの後、Bブックに上書きされないようにするには? 3 2024/12/22 11:53
- Excel(エクセル) 【マクロ】Formulaプロパティにて、3行全てに、数式を入れるためには? 2 2025/02/23 14:23
このQ&Aを見た人はこんなQ&Aも見ています
-
【マクロ】WEBシステムから保存ではなく、開いたExcelデータを変数に入れる事が出来る?
Excel(エクセル)
-
エクセルの循環参照、?
Excel(エクセル)
-
【マクロ】A列にある、日付(本日:4月17日)を検索し、セルを選択するには?
Excel(エクセル)
-
-
4
エクセル
Excel(エクセル)
-
5
9月17日でサービス終了らしいのですが、今までのようなエクセルの質問や相談はどこですればいい?
Excel(エクセル)
-
6
Excelの新しい空白のブックを開く度に 画像のような警告が出てきます ブック59と書かれていますが
Excel(エクセル)
-
7
【マクロ】コードを少しでも、減らする為には
Excel(エクセル)
-
8
【関数】同じ関数なのに、エラーが出るエクセルと出ないエクセルある?
Excel(エクセル)
-
9
プログラマー達は何故、プログラムを入れるフォルダーに容量制限があるのを知らない?
C言語・C++・C#
-
10
VBAの「To」という語句について
Visual Basic(VBA)
-
11
データの文字コードを確認するには
その他(Microsoft Office)
-
12
エクセルに、105と入力すると、勝手に100で除算して1.05になってしまうのは何故でしょうか? ち
Excel(エクセル)
-
13
【関数】不規則な文章から●●-●●●●-●●●●-●形式の数字を抜きだしたい
Excel(エクセル)
-
14
ユーザーマクロ作成
Excel(エクセル)
-
15
【マクロ】Call関数で呼び出した場合、共通の変数宣言は、省略できますか?
Excel(エクセル)
-
16
【マクロ】参照渡しとモジュールレベル変数 どっちが よく使うものですか?
Excel(エクセル)
-
17
エクセルで同じブックを開くについて
Excel(エクセル)
-
18
マクロOn Error GoTo ErrLabelとOn Error Resume Next教えて
Excel(エクセル)
-
19
【マクロ】シート追加時に同じ名前のシートがあり、エラーの場合、メッセージを出し、次のコードへ進むには
Excel(エクセル)
-
20
【マクロ】1回目の実行後、2回目からは実行できないようにはできますか?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAを一度起動するとずっと出て...
-
excelファイルに使われているVB...
-
Excelマクロ ファイル名が変わ...
-
【マクロ】宣言は、何のために...
-
マクロ実行後エクセルを閉じたい
-
マクロを消すマクロは不可能?
-
エクセルのマクロについて
-
アクセスでファイルを開いたと...
-
エクセル終了時の保存確認メッ...
-
秀丸エディタで1~1000までの数...
-
ビックリマークの意味
-
昨日まで動いていたエクセルの...
-
エクセルマクロが海外PCで開けない
-
エクセルファイルを自身のファ...
-
Adobe Reader を閉じる
-
別のパソコンでエクセルのマク...
-
エクセルで、ハイパーリンクを...
-
Excel マクロ実行で急に砂時計...
-
ワードを開いた時にメッセージ...
-
パソコンについて2点教えてくだ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】宣言は、何のために...
-
VBAを一度起動するとずっと出て...
-
エクセル終了時の保存確認メッ...
-
コピーしたファイルのマクロを...
-
excelファイルに使われているVB...
-
別のパソコンでエクセルのマク...
-
マクロを消すマクロは不可能?
-
Excelマクロ ファイル名が変わ...
-
VBA マクロ実行時エラー’1004Ra...
-
アクセスでファイルを開いたと...
-
昨日まで動いていたエクセルの...
-
EXCEL マクロ クリップボードク...
-
Excelが勝手にシート移動してし...
-
excelでpersonal.xlsを常に開く...
-
excelが別プロセスで起動してし...
-
エクセルマクロ実行中に別ファ...
-
【マクロ】エラーが発生⇒実行時...
-
マクロを設定したのに、拡張子...
-
外部データを取り込むマクロ
-
エクセルマクロが海外PCで開けない
おすすめ情報