vb6です。
フォーム上にボタンを配置しています。
Private Sub Form_Load()
Debug.Print Me.Command1.Caption
Debug.Print Command1.Caption
End Sub
フォーム上のボタンを参照する場合
'Me.'とつけるほうがいいのでしょうか?
Meでなくても、Form名でもいいと思います。
Debug.Print Form1.Command1.Caption
複数のFormを持つEXEの場合なども考慮するとつけた方がいい
コードのわかりやすさからいえば、フォーム名をつけたほうがよさそうですね。
ありがとうございました。
既に解決しているので、横から書くのは大変失礼かもしれませんが、
> コードのわかりやすさからいえば、フォーム名をつけたほうがよさそうですね。
これに関しては、私は同意しかねます。
Form1はオブジェクト変数であるので、
"Form1のインスタンスの中で、インスタンス自身を示すオブジェクト変数ではない"からです。
※特に理由がない場合、キーワード:Meを使った方がいいかと思います。
>"Form1のインスタンスの中で、インスタンス自身を示すオブジェクト変数ではない"からです。
そうですね。
ありがとうございました。
>※特に理由がない場合、キーワード:Meを使った方がいいかと思います。
そして殆どこのような場合のMeは省略されます。(^^;
Meを使う場合としてMSDNを次のキーワードで参照してください。
"Me キーワード"
"Me キーワードのコード例"
MSDNで"Form1.Visible"で検索すると、特に理由も無しに、
Form1.Visible = False なんてのが、がさがさ出てくる。
もちろんMe.Visible = Falseも出てくる。
従ってMeでもForm1でもどちらでも良いのでは、と思うのですが。
Form1.Visible = False
Form2.Visible = False
Form3.Visible = False
なんて書く場合は、見た目の綺麗さで、Form1かな。
Unload Me
これはMeだな。
Meを使う利点として、フォーム名を変更した場合でもコードを
書き直す必要がないことですね。
例えば
Form1.Visible = False
と書いた場合、もしフォーム名をfrmMainに変更したとすると
frmMain.Visible = False
と書き直さなければなりません。
ところが、
Me.Visible = False
と書いた場合は、フォーム名を変更してもコードを書きなおす
必要がありません。
>ところが、
>Me.Visible = False
>と書いた場合は、フォーム名を変更してもコードを書きなおす
>必要がありません。
それだけではなく例えば
Dim frm As Form1
Set frm = New Form1
frm.Show
というコードでフォームを表示させた場合、Form1 内部で
Form1.Visible = False
というコードが書かれてると、その時点で新たに Form_Load が走ったり、意図しない動作をしたりします。
# 実際、それではまった事も過去に数回 (^^;; 。
VB6.0 では明示的にこういうコードで Form を表示する事はあまりやらないのかもしれませんが、上記のような事を考えると自フォームをあらわす時にキーワード Me 以外を使う事はお勧め出来ません。
ツイート | ![]() |