- ベストアンサー
コマンドボタンやイメージにマウスをのせるとボタン名を表示したい
Excel97,Windows98SEを使用しています。 エクセルのシートに、コントロールツールボックスで作成したコマンドボタンやイメージを配置して、クリックするとマクロを実行させるようにしています。 そのボタンやイメージに、ツールバーのボタンの上にマウスをのせるとボタンの説明が出てくるのと同じような機能を付けたいのですが、可能でしょうか? ボタンの下のセルにコメントを入れてみたのですが上手くいきませんでした…。 ご存知の方、どうぞよろしくお願いいたします。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
#3さんのおっしゃるように、MouseMoveイベントを使う方法があります。 ボタンの上にテキストボックスを置きます。 ボタンのMouseMoveイベントでテキストボックスのVisibleプロパティ を True にします。 ボタンの下に、ボタンより一回り大きなイメージコントロールなどを置いて、そのコントロールのMouseMoveイベントで、テキストボックスの Visible を Falseにします。 イメージコントロールのBachStyleプロパティとBorderStyleで、イメージコントロールを透明にできます。
その他の回答 (7)
- sakenomo
- ベストアンサー率52% (35/67)
#7です。失礼しました、訂正です。 > テキストボックスは、"図形描画"のものを使うことをお勧めします、最初に書いておけばよかったですね。 "図形描画"ではなくて、コントロールツールボックスの"ラベル"ですね。 ラベルは文字の大きさや位置などに制約がありますが、プロパティを工夫すればけっこう使えると思います。
- sakenomo
- ベストアンサー率52% (35/67)
#4です。 > マウスの形が砂時計と矢印を行き来していて、だいぶチラつくのですが、 こちらでもテストしていますが、マウスポインターのちらつきは見られませんでした。ただ、マウスをすばやく動かすとイベントが発生しないようで、テキストボックスが消えないことがありますが。(^_^;) もしかするとテキストボックスは、コントロールツールボックスのテキストボックスを使っていらっしゃるでしょうか。そうだと、テキストボックスの上にポインターが乗ると、勝手に文字入力用に形が変わってしまいますね。テキストボックスは、"図形描画"のものを使うことをお勧めします、最初に書いておけばよかったですね。
お礼
ご回答どうもありがとうございます。 テキストボックスはコントロールツールのものを使っていました…(~_~;) 図形描画のテキストボックスを使うとうまくいきました。 > マウスをすばやく動かすとイベントが発生しない たぶん、そんなに早くマウスを動かして操作する人がいませんので大丈夫です! 長い間どうもありがとうございました。 またわからないことがありましたら、よろしくお願いいたします。
- 78tch
- ベストアンサー率31% (50/157)
#3ですが、いや~、昨日お風呂で思いついたんですが#4さんにもう書かれてました。 MouseMoveでなにか別のテキストボックスのキャプションとか、セルの値とかを表示させたいコメントにして、LostFocusぐらいでコメント非表示っていうのでどうでしょうかね。 それでもイメージとは違うとは思いますけど。
お礼
ご回答ありがとうございます。 ボタンとイメージのあるセルに最初にコメントを入れておいて、 Mousemoveで、コメント表示/非表示を切り替えるといいんですね。 Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Range("F11").Comment.Visible = True End Sub Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Range("F11").Comment.Visible = False End Sub こんな感じになりました。ありがとうございます!
補足
長い間どうもありがとうございました。 またわからないことがありましたら、よろしくお願いいたします。
- sakenomo
- ベストアンサー率52% (35/67)
#4です、ちょっと補足を。 > ボタンの下に、ボタンより一回り大きなイメージコントロール 「ボタンの下に」とは、イメージを右クリック、"順序"で、ボタンの背面に移動させるという意味です。
- 78tch
- ベストアンサー率31% (50/157)
いま見たら mousemove がおっしゃってるパターンじゃないですか? Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) MsgBox ("test") End Sub ただこれは完成イメージとはちょっと違いますね。
お礼
ご回答ありがとうございます。 Mousemoveはやってみたのですが、Msgboxやユーザーフォームだと作業が止まってしまい、テキストボックスなどはロードできないと言われてしまいました…。
- 78tch
- ベストアンサー率31% (50/157)
クリックせずにフォーカスさせるには土台になるユーザーフォーム上にボタンを配置してやり、「Tab」キーでフォーカスを移していく必要があるのでしょうね。 この辺りがVBAとVBの違い(ボタンがウインドウか単なるコントロールかという)かもしれませんので、ネットでよく探してみてください。
お礼
ご回答どうもありがとうございます。 やはりTabキーでフォーカスしようとすると、ユーザーフォーム上で配置しなければいけないのですね。 エクセルのバージョンが97ですので、 ユーザーフォーム.Show vbModeless という手が使えず、ボタンを常に表示しておく必要もありますので、ボタンをシート上に配置しているのですが、 なかなかむずかしいですね…。
- 78tch
- ベストアンサー率31% (50/157)
CommandButton1_GotFocus() でどうですか。 VBAを使ってらっしゃるようですので Private Sub CommandButton1_Click() のソースのどこかにポインタを置いて、ウインドウの 「Click↓」となってるところの「↓」を押すと関数が出来ると思いますよ。 この「↓」を押して出てくる以外のイベントはコマンドボタンオブジェクトにはありませんのでできませんが、逆にコマンドボタンにはこれだけのイベントがあるのだなぁ、と、他のオブジェクトを見るときにも見てみて。
お礼
早速のアドバイスどうもありがとうございます。 GotFocus ではどうしたらクリックせずにフォーカスできるのかちょっとわかりませんでした。 Click↓内の、BeforeDrugOver から MouseUp までとりあえず試してみたのですが、どれもマウスをのせただけというわけにはいかないのですね…。 OnMouse みたいなのがあるかと思ったのですが…。
お礼
ご回答ありがとうございます。 下にもうひとつのイメージを置くなんて考えつきませんでした! かなりイメージしているものに近いものができました! ただ、CommandButton1.MousePointer = fmMousePointerArrow という設定をしていても、マウスの形が砂時計と矢印を行き来していて、だいぶチラつくのですが、 他に違うやり方などがありますでしょうか? どうぞよろしくお願いします。