[[20130327170844]] 『ワークシート上のフォームコントロールにポップヒ』(まろ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ワークシート上のフォームコントロールにポップヒント』(まろ)

 ユーザーフォームのコントロールにControlTipTextで文字列を設定してカーソルをあてると
 ポップヒントが出てくるのと同じような感じで、ワークシート上にあるコマンドボタン
 (フォームコントロール)にカーソルをあてると文字列が表示されるような設定はできますか?
 Excel2010です。

 例えばSheet1に配置したコマンドボタンにカーソルをあてると
 「○○の操作を行います」
 といったような文字列を表示させたいです。

 方法があればお教えください。


 シートにActivexControlのフレーム(コントロールの選択より)を貼り付け、
 そのそのフレームの中にコマンドボタンを作成します。これは、
 Frame1.Controls("Commandbutton1")というプロパティで取得できます。
 このボタンのプロパティには、ControlTipTextがありますから、指定可能です。

 新規ブックにて、(Microsoft Forms 2.0 Object Library を参照設定)

 標準モジュールに

 '==========================================================================
 Sub 準備()
    Dim cmd As MSForms.CommandButton
    With ActiveSheet.OLEObjects.Add(ClassType:="Forms.Frame.1", Link:=False, _
        DisplayAsIcon:=False, Left:=312.75, Top:=118.5, Width:=126.75, Height _
        :=69)
       .Object.BackColor = &HFFFFFF
       .Object.BorderColor = &HFFFFFF
       .Object.Caption = ""
       .Object.SpecialEffect = 0
       Set cmd = .Object.Controls.Add("Forms.CommandButton.1")
       cmd.Left = 0
       cmd.Top = 0
       cmd.Width = .Width
       cmd.Height = .Height
       cmd.Caption = "テスト"
       cmd.ControlTipText = "テストぼたん"
       .Visible = False
       DoEvents
       DoEvents
       .Visible = True
    End With
 End Sub

 上記の「準備」を実行すると、アクティブシートにボタンが作成されます。
 実は、このボタン、フレーム内に作成されたコマンドボタンです。

 このボタンには、「テストぼたん」というメッセージが表示されるはずです。
 この準備というコードが行っていることは、手動操作で作成可能です。

 では、このボタンのイベントは?

 当該シートのモジュールに

 Private WithEvents cmd As MSForms.CommandButton
 Private Sub cmd_Click()
    MsgBox "ok"
 End Sub
 Private Sub Worksheet_Activate()
    Set cmd = Frame1.Controls("commandbutton1")
 End Sub

 当該シートを一度別のシートをアクティブにした後、また戻してボタンをクリックしてください。

 イベントが実行されるはずです。
 どこでオブジェクト変数にオブジェクトを設定するかは、仕様によりますが・・。

 試してみてください

 ichinose@一応訂正


 フォームツールのボタンに設定するのはどうなんだろう。
 そのままではちょっと難しいかな?

[[20130215121406]] 『コントロールボタンに設定したヒントの表示方法』(エクセル漂流者)

 ↑ではActiveXボタンの場合の議論がなされていたけど、参考までに目をとおしておいたらいいかも。

 で、代替案

 1.フォームツールのボタンではなく ActiveXのコマンドボタンにする。
  で、以下のコードを実行して、コメントを登録。

 2.フォームツールのボタンの上に、シェープの四角形をおおいかぶせて、塗りつぶし無し。線無し。
  で、以下のコードを実行して、コメントを登録。

 Sub Test()
    With Sheets("Sheet1")
        .Hyperlinks.Add anchor:=.Shapes("CommandButton1"), Address:="", _
            SubAddress:=.Shapes("CommandButton1").TopLeftCell.Address, _
            ScreenTip:="ひんと、ひんと"
    End With
 End Sub

 なお、2.の場合は、"CommandButton1"のところを、配置したシェープの名前に変更。

 (ぶらっと)

 オブジェクト変数を使わなくてよいなら、
 ぷらっとさんの方法がよいですねえ!!
 って、
[[20130215121406]]
 ↑同じこと記述してたんですねえ、私は、その後を見てなかったんですねえ
 失礼しました。

 ichinose


 ichinose様ぶらっと様ありがとうございます

 フォームコントロールをActiveXに変えてぶらっと様のコードを実行したらできました!

 (まろ)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.