• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Option Explictについて教えてください)

Option Explictについて教えてください

このQ&Aのポイント
  • Option Explictとは、コンパイルエラーを防ぐための指定です。実行時に変数が定義されていない場合にエラーとなり、ミスを防ぐことができます。
  • 初心者はVBEの「ツール」の「オプション」で「変数の宣言を強制する」にチェックを入れることを推奨します。
  • Option ExplictはVBAのコーディングルールの1つであり、変数宣言の必要性を強調しています。マクロの記録を修正する際にも活用できます。

質問者が選んだベストアンサー

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

>option explicitを指定すると【記述内に変数宣言がないとエラーになる】と解釈したのですがそれは間違っていますか?  ⇒誤りです。   変数の記述ミスによる実行時の不正を事前に防止する為に定義するオプションです。   プログラム作りを本業とはしていない一般のExcelユーザが、より早く、より簡単に、   自分のExcel作業を自動化するための目的でマクロを作りたいという場合に、標準では   ないオプションの指定をするのは全く無意味とは言いませんが煩わしいだけなので不要と   考えます。   

gx9wx
質問者

お礼

やはり解釈間違いなのですね。 でもそういう説明はあまり見かけませんでした。 ありがとうございました。

その他の回答 (4)

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.5

> ですが以下の場合 > 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 > 多分変数は宣言していないので > 「変数が定義されていません」とエラーが出ると > 思ったのに、でませんでした。 定義されていない変数が使用されている場合にエラーになります。 この例の場合、変数は使用されていないので、エラーにはなりません。

gx9wx
質問者

お礼

>この例の場合、変数は使用されていないので、エラーにはなりません。 変数を使用していて宣言がされてないと エラーをお教えてくれる 親切なオプションという事で理解しました。 どうもありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

#3さんと表現は違いますが、Option Explicit というのは、建前のようなものです。変数について、「私は間違って使わないです」というなら、それはなくても良いのです。 ここの掲示の回答者でも、Option Explicit という所から書く人はいませんね。入れる入れないは、ユーザーの自由だ、というものだと思います。 #初心者はVBEの「ツール」の「オプション」「編集」を選択して「変数の宣言を強制する」 そもそも、この書いている人が間違っています。入門レベルで、明示的な変数を入れるということをお勧めしません。きちんと変数の意味を理解しないままに入れるものではありません。入れても、Variant 型以外に、ほとんど区別が付かないと思います。 #option explicit が無いとミスがミスと分からずに実行しますので、間違った結果が出てしまいます。 ミスがミスというほどのものは、ないと思います。  abc = "Hello"  Msgbox(adc) 確かに、Helloは返ってきていませんが、結果ははっきりしていますから、分かりますでしょう。だいたいは、変数のスペルを間違えたら分かるものです。 この問題で、本当のトラブルというのは、めったに出てくるものではありません。具体的には、主にCurrency(Decimal)型とDouble型等の浮動小数点演算の中で起こるもので、Currency(Decimal)型って何?というレベルでは、変数の強制など意味がありません。また、そういうのは、入門レベルでは分からなくて良いのです。それを、無理に変数とデータ型を入れても意味がありません。 それと、ちょっとリンク先を皮肉ってよいなら、こういうのに、喩え話というのは、難しいと思います。Option Explicit と変数の宣言とデータ型を決めることとは、まったく別の論議です。すでに名前を付けているものに、あらたに、間違えてはいけませんよ、ということ自体は、自己責任でもあります。 変数のスペルだけの問題なら、検索すればよいだけです。変数の宣言するだけなら、ほとんど意味がありません。データ型を入れたら、入門者では、逆に使い分けしにくくなるだけだと思います。したがって、Option Explicit は、それほど重大な意味を持ちません。

gx9wx
質問者

お礼

詳しく説明していだきまして ありがとうございます。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

Macro1には変数が使われていません。 従って、モジュールに Option Explicit とあっても Macro1の実行時にエラーにはなりません。 エラーになるのは 変数が使われているにも関わらず宣言がされていない という場合です。 変数とは数値や文字列などを一時的に格納する入れ物です。 ≪参考≫ Excel VBA 入門講座 変数 http://excelvba.pc-users.net/fol5/5_1.html

gx9wx
質問者

お礼

>エラーになるのは >変数が使われているにも関わらず宣言がされていない >という場合です。 大変わかりやすかったです。 ありがとうございました。

回答No.1

Option Explict は、書かれているとおりの内容です 既に動いているプログラムなら 片っ端から先頭に Option Explict を追加しても問題ありません。 で、コンパイルを掛けると 変数宣言しないで いきなり使用しているところがあればそこでエラーが出ます。 マクロへのリンクばかりならエラーは、出ないはずです。 付けて構いません。 基本的に、付けてコンパイルエラーが出たらそこを修正するべきです。 Cindy.

gx9wx
質問者

お礼

お礼が遅れました。 ありがとうございました。

関連するQ&A