- ベストアンサー
「変数の宣言を強制する」にチェックがついてませんで
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
経験上、[変数の宣言を強制する]はデフォルトではオフになっていると思いますけどね。 TANAKAおじさまも http://officetanaka.net/excel/vba/beginner/06.htm の中ほどで 『で、問題は、VBAの初期状態は、このオプションがオフになっているということです』 と述べています。 なお、この設定はユーザーごとに保存されます。
関連するQ&A
- VB2010で、変数の宣言がわかりません。
VB2010で、変数の宣言がわかりません。 Option Explicit Public i, j, k, l As Long Public ii, jj, kk, ll As Long Public lngFileSuu As Long Public strTemp As String ・ ・ ・ と標準モジュールに宣言すると エラーがでています。 VB6.0とは宣言方法が違うのでしょうか? 教えてください。よろしくお願いします。
- ベストアンサー
- Visual Basic
- JavaScriptでVBのOption Explicitのように変数の明示的な宣言を強制することは不可能?
たぶんできないのだとは思いますが、ダメ元で質問です。 JavaScriptでVBのOption Explicitステートメントのように、変数の明示的な宣言を強制することはできないのでしょうか? 調べた限りでは、なさそうですが、将来的に言語使仕様が変わる云々の可能性も含めてコメント頂けると幸いです。 できないとすると、変数のタイプミスによるバグの発見が大変だと思いますが、皆さんはどのように工夫してデバッグされていますか?
- ベストアンサー
- JavaScript
- Option Explictについて教えてください
WEBでOption Explictを検索したら ------------------------------------ option explicit を指定して実行すると、 「コンパイルエラー変数が定義されていません。」 のエラーが出て、青色に反転します。 つまり、単純ミスが防げます。 option explicit が無いと ミスがミスと分からずに実行しますので、 間違った結果が出てしまいます。 option explicit は無条件に定義しましょう。 ---------------------------------- 変数の宣言を強制されるため、 変数のタイプミスを防ぐことができます。 ---------------------------------- 初心者はVBEの「ツール」の「オプション」 「編集」を選択して「変数の宣言を強制する」 (初期状態ではチェックがついていません) には必ずチェック。 ------------------------------------ 変数を宣言しているのはユーザーの環境が、 Option Explicit と明示的に変数を宣言することを 要求されている可能性があるので「エラーが出ました」 という場合があるからです --------------------------------- など色々と見つかりました。 一番わかりやすかったのは ↓これでした。 http://okwave.jp/qa/q4304440.html また以下のような説明もありました。 Option Explicitをつけた場合とつけない場合で 下のソースを実行してみてください。 abc = "Hello" Msgbox(adc) ↓ で説明のように試してみたら ・つけた場合→コンパイルエラー ・つけない場合→エラーにならずMsgboxは空白 でした。これは理解できました。 ですが以下の場合 Option Explicit Sub Macro1() Sheets("Sheet1").Select Columns("A:A").Select Selection.Copy Columns("C:C").Select ActiveSheet.Paste Application.CutCopyMode = False Range("A1").Select End Sub 多分変数は宣言していないので 「変数が定義されていません」とエラーが出ると 思ったのに、でませんでした。 >変数の宣言を強制されるため >Option Explicit と明示的に変数を宣言することを >要求されている可能性 の説明からの自分の解釈と合致しません。 option explicitを指定すると 【記述内に変数宣言がないとエラーになる】 と解釈したのですがそれは間違っていますか? それともSub Macro1()はどこかに変数宣言が あるのでしょうか? 凄くわかりやすく教えていただきたいです。 【追記】 退職者が残したエクセルファイルにて。 Sheet1~Sheet8まであります。 VBEで見ていくと Sheet1:Option Explict Sheet2:Option Explict Sheet3:Option Explict Sheet4:Option Explict Sheet5:Option Explict Sheet6:何も無し Sheet7:Option Explict Sheet8:Option Explict 次に標準モジュールを見ると Module1:Option Explict Sub Macro2() Module2:Option Explict Sub Macro3() Module3:Option Explict Sub Macro4() Module4:Option Explict Sub Macro5() Module5:Option Explict Module6:Option Explict Sub Macro1() となっています。 Macro1~Macro5は全て マクロの記録のみで作成されています。 これを修正するのですが、Option Explictを 初めて見たので困惑しています。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 複数のフォーム間での変数宣言
VB6.0についての質問です。ひとつのプロジェクトの中に複数のフォームがあるとします。この中のある一つのフォームで変数 NUM を宣言し、何かの計算値を入れます。このNUMを値は保持したまま、他のフォームで利用することはできるのでしょうか? とりあえず全てのフォームのコードの先頭(プロシージャの外、Option Explicit下)に「Public NUM As Single」と宣言して挑戦してみたのですが、駄目でした。。よろしくお願いします。
- ベストアンサー
- Visual Basic
- VBScriptの変数宣言
ASPでvbscriptを使って処理をしているページの修正を行っていたのですが、その中で不思議な状態が発生しています。 <% Option Explicit On Error Resume Next %> ===== 省略 ===== <% filename = Trim(bobj.Form(bin,"filename")) Dim filename ===== 省略 ===== 普通、上記のような記述ではfilenameの代入のところでエラーが発生すると思うのですが、代入処理の直後にerr.numberを判定しても、エラーが発生していないんです。 includeしてあるファイルの内部も検索しましたが、filenameの変数宣言は見つかりませんでした。 VBScriptって、どこで変数宣言を行っても有効になるのでしょうか? 正常に動いているので、今のところ問題は無いのですが、何か気持ち悪くて。。。 似たような現象が起こった事のある方や、これが正しい動きだというご指摘をお願いいたします。
- 締切済み
- その他(プログラミング・開発)
- Option Compare Database
vbaで Option Explicit がないと、変数の宣言が強制されないけど、 アクセスには Option Compare Database がありますが、 これはどういう役目をなしてるのでしょうか? これがないとどうなるのでしょうか?
- ベストアンサー
- オフィス系ソフト
- 構造型の宣言について
VB6.0の標準モジュールにて、 Option Explicit Public Type typeData data() As Variant End Type Public arrData() As typeData と構造型の配列を宣言したのですが、 メインのフォーム内にて Public Sub syori(arrData() As typeData) ~ end sub と記述しても、 プライベートモジュール内で宣言した型は使えません、と出てしまいます。 構造型をサブルーチン内で使うことはできないのでしょうか? 分かる方がいらっしゃいましたら、ご教授のほどお願いいたします。
- 締切済み
- Visual Basic
- 定数の宣言ってdimは使えないのですか?
VBAです。 標準モジュールに Option Explicit Public Const フォルダ名 As String = "新しいフォルダー" Sub aaaa() End Sub はできるのですが、 Option Explicit dim Const フォルダ名 As String = "新しいフォルダー" Sub aaaa() End Sub は、エラーになってしまいます。 Option Explicit Sub aaaa() dim Const フォルダ名 As String = "新しいフォルダー" End Sub もダメみたいです。 定数を使うときは、必ずPublicで宣言しなけらばいけないのでしょうか?
- ベストアンサー
- オフィス系ソフト
- VB.Netの大域変数
VB6ではイベント制御のため、共通モジュールに大域変数を Public gFlag As Integer のように記述していました。 最近になってVB.Netをはじめましたが、この大域変数がうまく動いてくれません。 とりあえずVB6の共通モジュールはクラスを追加して行うとあり、 クラスを追加して、そこで上記のようにPublicで宣言しました。 ところがFormのコードで使うと宣言されていませんと出ます。 そこで色々と調べてPublicは外部に公開されるメンバ??らしい ということは分かったのですが、クラス自体さっぱりです。 とりあえずクラスのお勉強は後回しにするとして、 大域変数はどのようにすれば使えるようになるのか教えて下さい。
- ベストアンサー
- Visual Basic
- MS Access2007 フォーム作成で不思議な現象が起きて困っています
OS: WindowsXPSP3 Access2007:SP2 MSO(12.0 6425.1000) フォームのモジュールで Private 変数を宣言し、 フォームの開く時イベントで、値を代入するようにしました。 レコード移動時イベントでその変数を利用しようとしたら、 最初のレコード移動時にすでに値が空になってしまっているのです。 フォームを開いた時には、ちゃんと代入されています。 モジュール変数に値を代入しているのは、開く時だけです。 当然ながら、Option Explicit宣言をしてあります。 どうしてこんな現象が起きてしまったのでしょう? 解決に向けて、何をどう調べていったら良いのか、皆目見当がつかない状況に陥ってしまいました。 皆様のお知恵を是非お借りしたく、どうかよろしくお願いいたします。 ちなみに、Officeの診断プログラムは実行して問題のないことを確認済みです。
- 締切済み
- その他(データベース)
お礼
ありがとうございました。