こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

[Q:VBA] 現在のオブジェクトの参照(JavaScriptのthisキーワードに相当するもの)

こんにちは。
Excel VBAで現在のオブジェクトの参照をすることはできますでしょうか?(JavaScriptのthisキーワードに相当するものはあるのでしょうか?)

下記のようなことをしたいのですが(コード自体に意味はありません。検証用です)。
よろしくお願い致します。


--
Private Sub CommandButton1_Click()
キャプション = CommandButton1.Caption
MsgBox(キャプション)
End Sub

Private Sub CommandButton2_Click()
キャプション = CommandButton2.Caption
MsgBox(キャプション)
End Sub

・・・×数十個

↓↓↓

Private Sub CommandButton1_Click()
funcCaption
End Sub

Private Sub CommandButton2_Click()
funcCaption
End Sub

・・・×数十個

Sub funcCaption()
キャプション = this.Caption
MsgBox(キャプション)
End Sub

投稿日時 - 2003-05-12 16:59:06

QNo.545653

すぐに回答ほしいです

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

こんにちは。maruru01です。

フォーカスを持っているコントロールを参照する、ActiveControlというプロパティがあります。



Sub funcCaption()
キャプション = ActiveControl.Caption
MsgBox(キャプション)
End Sub


という感じで出来ると思います。

投稿日時 - 2003-05-12 17:14:19

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

もしくは、こんな書き方も。

Private Sub CommandButton1_Click()
 Call funcCaption( CommandButton1 )
End Sub

Private Sub CommandButton2_Click()
' またはこんな書き方
 funcCaption CommandButton2
End Sub

Private Sub funcCaption( This As Control )
 MsgBox This.Caption
End Sub

投稿日時 - 2003-05-13 00:37:57

お礼

お返事が遅くなりすみません。
みなさんご回答ありがとうございます。
まさにActiveControlで解決できました!
ありがとうございました。
VB,VBSではMeなのですか~?
違うと困りますね~。
temtecomaiさんの方法も面白いですが、
2回「CommandButton1」と書くのを控えたかったので、
今回はActiveControlでやりました。
ありがとうございました!

投稿日時 - 2003-05-26 02:00:40

ANo.2

maruru01さんが解答しているので、これは蛇足です。

VBとかVBAの場合、現在のオブジェクトを表すのは、「Me」ですが、イベントハンドラはフォームに定義されますので、そのハンドラが、ボタンコントロールのものであっても、Meは、そのボタンが乗っているフォームになります。

VB.Netでどうなっているかは試した事無いので謎。

投稿日時 - 2003-05-12 17:30:39

あなたにオススメの質問