プロが教えるわが家の防犯対策術!

Excel97,Windows98SEを使用しています。

エクセルのシートに、コントロールツールボックスで作成したコマンドボタンやイメージを配置して、クリックするとマクロを実行させるようにしています。

そのボタンやイメージに、ツールバーのボタンの上にマウスをのせるとボタンの説明が出てくるのと同じような機能を付けたいのですが、可能でしょうか?

ボタンの下のセルにコメントを入れてみたのですが上手くいきませんでした…。

ご存知の方、どうぞよろしくお願いいたします。

A 回答 (8件)

#3さんのおっしゃるように、MouseMoveイベントを使う方法があります。



ボタンの上にテキストボックスを置きます。
ボタンのMouseMoveイベントでテキストボックスのVisibleプロパティ を True にします。
ボタンの下に、ボタンより一回り大きなイメージコントロールなどを置いて、そのコントロールのMouseMoveイベントで、テキストボックスの Visible を Falseにします。
イメージコントロールのBachStyleプロパティとBorderStyleで、イメージコントロールを透明にできます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
下にもうひとつのイメージを置くなんて考えつきませんでした!
かなりイメージしているものに近いものができました!
ただ、CommandButton1.MousePointer = fmMousePointerArrow
という設定をしていても、マウスの形が砂時計と矢印を行き来していて、だいぶチラつくのですが、
他に違うやり方などがありますでしょうか?
どうぞよろしくお願いします。

お礼日時:2003/11/26 10:58

#7です。

失礼しました、訂正です。

> テキストボックスは、"図形描画"のものを使うことをお勧めします、最初に書いておけばよかったですね。

"図形描画"ではなくて、コントロールツールボックスの"ラベル"ですね。
ラベルは文字の大きさや位置などに制約がありますが、プロパティを工夫すればけっこう使えると思います。
    • good
    • 2

#4です。



> マウスの形が砂時計と矢印を行き来していて、だいぶチラつくのですが、

こちらでもテストしていますが、マウスポインターのちらつきは見られませんでした。ただ、マウスをすばやく動かすとイベントが発生しないようで、テキストボックスが消えないことがありますが。(^_^;)

もしかするとテキストボックスは、コントロールツールボックスのテキストボックスを使っていらっしゃるでしょうか。そうだと、テキストボックスの上にポインターが乗ると、勝手に文字入力用に形が変わってしまいますね。テキストボックスは、"図形描画"のものを使うことをお勧めします、最初に書いておけばよかったですね。
    • good
    • 1
この回答へのお礼

ご回答どうもありがとうございます。
テキストボックスはコントロールツールのものを使っていました…(~_~;)
図形描画のテキストボックスを使うとうまくいきました。

> マウスをすばやく動かすとイベントが発生しない
たぶん、そんなに早くマウスを動かして操作する人がいませんので大丈夫です!

長い間どうもありがとうございました。
またわからないことがありましたら、よろしくお願いいたします。

お礼日時:2003/11/27 10:39

#3ですが、いや~、昨日お風呂で思いついたんですが#4さんにもう書かれてました。


MouseMoveでなにか別のテキストボックスのキャプションとか、セルの値とかを表示させたいコメントにして、LostFocusぐらいでコメント非表示っていうのでどうでしょうかね。
それでもイメージとは違うとは思いますけど。

この回答への補足

長い間どうもありがとうございました。
またわからないことがありましたら、よろしくお願いいたします。

補足日時:2003/11/27 10:39
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
ボタンとイメージのあるセルに最初にコメントを入れておいて、
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

こんな感じになりました。ありがとうございます!

お礼日時:2003/11/26 11:28

#4です、ちょっと補足を。



> ボタンの下に、ボタンより一回り大きなイメージコントロール

「ボタンの下に」とは、イメージを右クリック、"順序"で、ボタンの背面に移動させるという意味です。
    • good
    • 0

いま見たら


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
ただこれは完成イメージとはちょっと違いますね。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
Mousemoveはやってみたのですが、Msgboxやユーザーフォームだと作業が止まってしまい、テキストボックスなどはロードできないと言われてしまいました…。

お礼日時:2003/11/26 10:52

クリックせずにフォーカスさせるには土台になるユーザーフォーム上にボタンを配置してやり、「Tab」キーでフォーカスを移していく必要があるのでしょうね。


この辺りがVBAとVBの違い(ボタンがウインドウか単なるコントロールかという)かもしれませんので、ネットでよく探してみてください。
    • good
    • 0
この回答へのお礼

ご回答どうもありがとうございます。
やはりTabキーでフォーカスしようとすると、ユーザーフォーム上で配置しなければいけないのですね。
エクセルのバージョンが97ですので、
ユーザーフォーム.Show vbModeless
という手が使えず、ボタンを常に表示しておく必要もありますので、ボタンをシート上に配置しているのですが、
なかなかむずかしいですね…。

お礼日時:2003/11/25 17:59

CommandButton1_GotFocus()


でどうですか。
VBAを使ってらっしゃるようですので
Private Sub CommandButton1_Click()
のソースのどこかにポインタを置いて、ウインドウの
「Click↓」となってるところの「↓」を押すと関数が出来ると思いますよ。
この「↓」を押して出てくる以外のイベントはコマンドボタンオブジェクトにはありませんのでできませんが、逆にコマンドボタンにはこれだけのイベントがあるのだなぁ、と、他のオブジェクトを見るときにも見てみて。
    • good
    • 0
この回答へのお礼

早速のアドバイスどうもありがとうございます。
GotFocus ではどうしたらクリックせずにフォーカスできるのかちょっとわかりませんでした。
Click↓内の、BeforeDrugOver から MouseUp までとりあえず試してみたのですが、どれもマウスをのせただけというわけにはいかないのですね…。
OnMouse みたいなのがあるかと思ったのですが…。

お礼日時:2003/11/25 17:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A