Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5599 / 13645 ツリー ←次へ | 前へ→

【49917】Application.Callerについて iland 07/6/27(水) 22:44 質問[未読]
【49920】Re:Application.Callerについて ichinose 07/6/28(木) 7:27 発言[未読]
【49931】Re:Application.Callerについて iland 07/6/28(木) 21:46 質問[未読]
【49932】Re:Application.Callerについて bykin 07/6/28(木) 21:59 回答[未読]
【49935】Re:Application.Callerについて iland 07/6/28(木) 23:12 質問[未読]
【49937】Re:Application.Callerについて bykin 07/6/28(木) 23:24 発言[未読]
【49938】Re:Application.Callerについて iland 07/6/28(木) 23:33 質問[未読]
【49939】Re:Application.Callerについて bykin 07/6/29(金) 0:37 発言[未読]
【49946】Re:Application.Callerについて りん 07/6/30(土) 9:02 発言[未読]

【49917】Application.Callerについて
質問  iland  - 07/6/27(水) 22:44 -

引用なし
パスワード
   ユーザーフォームのボタンに下記のコードを書いたところ、

Private Sub CommandButton1_Click()
Dim A As Variant
A = Application.Caller
MsgBox A
End Sub

エラーが起きてしまいます。
クイックウォッチ(でしたっけ?)を利用し、Application.Callerの値を見てみると、エラー2033と表記されます。

取得するにはどのようにすればよいでしょうか。

【49920】Re:Application.Callerについて
発言  ichinose  - 07/6/28(木) 7:27 -

引用なし
パスワード
   ▼iland さん:
おはようございます。

>ユーザーフォームのボタンに下記のコードを書いたところ、
>
>Private Sub CommandButton1_Click()
>Dim A As Variant
>A = Application.Caller
>MsgBox A
>End Sub
>
>エラーが起きてしまいます。
>クイックウォッチ(でしたっけ?)を利用し、Application.Callerの値を見てみると、エラー2033と表記されます。

上記の条件で、
Application.Callerの値をエラー値にしないようにするのは簡単ですが・・・
(適当なシート上にコマンドバー「フォーム」にあるボタンを配置し、

sub main()
  userform1.show
end sub

等と標準モジュールに記述したプロシジャーmainを前述のシート上に配置したボタンに
登録する)。

でも、これではエラーにはなりませんが、iland さんが望まれている結果でも
ないのではないかと思います。

つまり、Application.Callerでは望んでいる値は取得できない

と、推測します。

スレッドの近いところでは、

www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=49892;id=excel

↑これと同じような内容でしょうか?

あくまでも推測ですが・・・。

【49931】Re:Application.Callerについて
質問  iland  - 07/6/28(木) 21:46 -

引用なし
パスワード
   ▼ichinose さん:

 www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=36274;id=excel
 ↑近い質問……というか、そのものズバリの質問がこのトピックです。

 こちらのトピックでは解決なされたようで、自分もそれを試してみたのですが、Application.caller で押されたボタン名が取得できず、エラーが起こってしまいます。

【49932】Re:Application.Callerについて
回答  bykin  - 07/6/28(木) 21:59 -

引用なし
パスワード
   こんばんわ。

ichinoseはんご紹介の、↓こっちは見てもらったんかな?
www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=49892;id=excel

ユーザーフォームではCallerプロパティはエラーになるんですわ。
ヘルプで確認してみてください。(「上記以外の呼び出し」に該当)

上記スレッドを見てもらえればわかるけど、ユーザーフォームでは
ActiveControlっていうプロパティを使うんですわ。

よろしゅーに。
ほな。

【49935】Re:Application.Callerについて
質問  iland  - 07/6/28(木) 23:12 -

引用なし
パスワード
   回答、ありがとうございます。上記スレッドも当然見たのですが、

Private Sub CommandButton3_Click()
  Test Me.ActiveControl
End Sub

Private Sub Test(ByRef obj As MsForms.Control)
  MsgBox obj.Caption & "が押されました。"
End Sub

 のコードを直接コピペしてみたところ、オブジェクトはこのプロパティ・メソッドをサポートしていない、というエラーが発生しました。
 どのように変更すればよいのでしょうか・・・?

【49937】Re:Application.Callerについて
発言  bykin  - 07/6/28(木) 23:24 -

引用なし
パスワード
   こっちではエラー出まへんが・・・

CommandButton3のTakeFocusOnClickプロパティがFalseに
なってたりしまへんか?

もしもそうやったら、Trueにしてみてください。

ほな。

【49938】Re:Application.Callerについて
質問  iland  - 07/6/28(木) 23:33 -

引用なし
パスワード
    確認したところ、Trueになっていました。
 bykinさんの方では動いていらっしゃるんですよね……一体何が悪いのだろうι
 何かお気づきになった点ありましたら、よろしくお願いします。

【49939】Re:Application.Callerについて
発言  bykin  - 07/6/29(金) 0:37 -

引用なし
パスワード
   何だかよくわかりまへんが・・・

新規ブックに新しいユーザーフォームを追加して、
コマンドボタンを配置してコードを貼り付けてみたらどーでっか?
(新しく作り直すってこと)

ほな。

【49946】Re:Application.Callerについて
発言  りん E-MAIL  - 07/6/30(土) 9:02 -

引用なし
パスワード
   iland さん、おはようございます。

>Private Sub CommandButton3_Click()
>  Test Me.ActiveControl
>End Sub
>
>Private Sub Test(ByRef obj As MsForms.Control)
>  MsgBox obj.Caption & "が押されました。"
>End Sub
>
> のコードを直接コピペしてみたところ、オブジェクトはこのプロパティ・メソッドをサポートしていない、というエラーが発生しました。
上か下かどちらでエラーが発生したのかわかりませんが、
もしも下なら、コードを

 MsgBox TypeName(obj)

として、何と表示されるか確認してみてください。
あと、EXCELのバージョンは?

5599 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free