- ベストアンサー
【ACCESS】!と.の違いは?
VBAの初歩的な質問だと思いますが、 ヘルプを読んでもイマイチ理解できません。 !と.の違いって何でしょうか? 例えば、 Me.Filter = 条件 としても、 Me!Filter = 条件 としても、 抽出される結果は同じですよね? また、 Me.ラベル.Caption = "ホニャララ" としても、 Me!ラベル.Caption = "ホニャララ" としても、 「ラベル」にはホニャララと表示されます。 同じ作業でも参考書によってMe!を使っている場合とMe.を使っている場合など、参考書によって違っているので悩んでいます。 !と.では、どっちを使う方が良いのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「Me.」は「Meのプロパティとして構成しているラベルコントロールのプロパティであるCaption」 「Me!」は「Meという名のFormの中にあるラベルコントロールのプロパティであるCaption」 (両方ともMeは自分自身のことを示す変数となりますが) といった感じで認識しています。(微妙な言い回しの違いが分かりますでしょうか・・・) 動作自身はどちらも換わらないと思うのですが、「Me.」の方が入力支援があるんでそちらを使ってます。 また最近のバージョンは分かりませんが、古いバージョンでコントロール名を日本語でつけた場合「Me![ラベル].Caption」などとしなければ予想外のエラーになることもありますので注意が必要です。 VB.NETなどでは「Me.」といった記述に統一されているようなので「Me!」のような記述は今後は避けたほうが良いかもしれません。
その他の回答 (2)
- snoopy64
- ベストアンサー率42% (337/793)
#1です。 締め切りを待っていただいてありがとうございます(^O^)/ その解釈で構わないと思います。 僕自身は、フィールド名が続く場合は、明示的に「!」を使用しています。 後でプログラムを見直したときに、それと分かるように。 #2さんのおっしゃっている「入力支援」とは、例えば「Me」の後に「.」を入力すると、自動的に候補一覧が出てきますよね?あれのことです。 以前にしたかった重要な補足・・・これは忘れてしまいましたが、言うほど重要ではないと思います(^_^;) では、頑張ってくださいヽ(^。^)ノ
お礼
お返事ありがとうございます。 なんとか、自分なりに解釈ができるようになりました。 入力支援とは、ソレのことだったのですね。 なるほど。確かに!のときは候補出ませんね。 何度も、ありがとうございました!
- snoopy64
- ベストアンサー率42% (337/793)
これ、参考になりますか? http://office.microsoft.com/ja-jp/assistance/HP051867691041.aspx 頑張ってくださいヽ(^。^)ノ (あと、これは関係ないんですけど・・・先日、回答をつけようと思ったら、速攻で締め切られてしまって、重要な事を補足しそこなってしまいました。解決したつもりでも、他の回答者が補足したい場合もあるので、あまり急いで締め切たない方が、いいかもしれませんよ。。。)
補足
snoopy64さん毎度、毎度ありがとうございます。 参考URLは、「!」と「.」の違いを調べているときに読んでいました。 読んでも理解できなかったので質問しました。 理解力無くてすみません。(>‗<;) >予期しない結果を避けるもう 1 つの方法は、 >フィールド、コントロール、およびオブジェクトを >参照するときに、常にドット (.) 演算子の代わり >に ! 演算子を使用することです。 と書いてあったので今までは「!」を使っていました。 が、NO.2さんの回答では「.」を使った方がいいと言う回答でした。 実際は、参照する条件や場合によって!と.を使い分けるのだと思いますが、その「条件や場合」がいまいち理解できていません。 今一度考えた私的な解釈ですが、 参照するとき、フィールド名がプロパティと重複する場合は「!」を使う。 参考URLでいえば、Nameなど。 普段は「.」で構わない。 です。 こんな感じで良いのでしょうか? あと、締め切りについて申し訳ありません。 重要なことって何だったのでしょう??? すっごい気になります(++;) 解決したのに締め切らないでポイント付けないと回答者の方が不満に感じるかと思い速攻で締め切ってました。これからはもう少し間をおいて締め切ることにします。 長文お許しください m(_ _)m
補足
返答有難うございます。 >「Me.」の方が入力支援がある 入力支援とはどんなものでしょうか? Me.[ラベル].Caption="あいう" と Me![ラベル].Caption="あいう" とした場合、 Me!だとその場の一時的な代入 Me.では、実際に[ラベル]の標題を「あいう」に変える。(次にそのフォームを開いたとき、ラベルの標題は「あいう」になっている) と考えていいのでしょうか? 今一度考えた私的な解釈ですが、 参照するとき、フィールド名がプロパティと重複する場合は「!」を使う。 参考URLでいえば、Nameなど。 普段は「.」で構わない。 です。 こんな感じでいいのでしょうか?