Microsoft Access 掲示板

Me.や.Valueが何のためにあるかピンとこない

3 コメント
views
4 フォロー

初学者です。

コードの中でタイトルのような単語が度々登場しますが、何のためにあるのかよく分かりません。
Me.は省略してもコードが問題なく通ることもあり、必要性がわかりません。便利だなと思ったのはMe.まで入力すると入力補助でテキストボックスとかの名前が出てくることくらいです。
.Valueに関しては、教材に載っているけど説明が乏しく、何のためにあるのか全く分かりません。

また、テキストボックスを[]で囲む時と囲まない時の違いが分かりません。
丁寧に教えて下さる優しい方がいらっしゃいましたらよろしくお願い致します。

Sign is "B"
作成: 2023/11/30 (木) 09:05:12
通報 ...
1

便利だなと思ったのはMe.まで入力すると入力補助でテキストボックスとかの名前が出てくることくらいです。

これはかなりのメリットだと思いますが。これがあるおかげで、コード入力がはかどりますし、タイプミスによるエラーも防げます。
また、Me.があれば、フォーム(レポート)に関連するコントロール、メソッド、プロパティと分かりますので、コードを後から読むときに解読しやすいです。ないと、それ以外の何かの可能性も考慮しつつ読む必要がでてきます。
他の関数などと名前が重複したりすると、バグの原因になりかねません。

.Valueに関しては、教材に載っているけど説明が乏しく、何のためにあるのか全く分かりません。

Valueはそのオブジェクトが持っている値を取得するプロパティです。
このプロパティはよく使用することが多いので既定のプロパティとされていて、省略することができます。
値を取得したいときは省略してもいいのですが、関数などと名前が重複したりするとバグの原因になったりするので、大きなプロジェクトの場合は、省略しない方がいいと思います。

また、テキストボックスを[]で囲む時と囲まない時の違いが分かりません。

通常は囲まなくても大丈夫ですが、コントロール名に半角スペースが含まれていたり、VBAのコードとバッティングする記号が含まれていたりするとコントロール名と認識できない場合がありまので、その時は必要になります。

2
hiroton 2023/11/30 (木) 10:31:40 57b07@f966d

人間がコードを記述するときに楽をするための仕様ですね

VBAはコードを記述する際に、高頻度でその用途で使われるモノは省略しても良いとして、様々なモノが省略可能なように作られました

つまり、Me..Value[]で囲むのも、省略した場合、コードが実行されるタイミングで記述されているとみなしてコードが実行されています

これらは、省略したとき、意図しない解釈がされてしまう場合には明記する必要があります

例えば「1」という名前のテキストボックスを作成します。これをコード上で記述する場合、単に「1」と記述すると、コードの解釈としては数値の「1」を記述したと解釈されます

a = 1 + 1

この記述は常にa=2です

a = [1] + 1

この記述は「aに「1という名前のコントロール」の値に「1」を加えた値を代入する」となります

3
Sign is "B" 2023/11/30 (木) 15:23:32 7fdfc@46fae

おふたりとも大変分かりやすい説明です、ありがとうございました。
MOS合格できそうです。