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

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

 

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

EXCEL2007
Windous7

 シート上にコントロールボタンを配置し、クリックイベントでいろいろ動作させる
予定でいます。
 そこで、どのボタンがどのような機能を持っているかの説明をポップヒントで表示
させようとコントロールボタンにハイパーリンクのヒント設定をしました。

 デザインモードでは思ったとおり表示されているのですが、いざ使おうとデザイン
モードを解除したところヒントが表示されなくなってしまいました。
 もともとコントロールボタンはフォームで使用するものなのでしょうが、シート上
に既にボタンを配置してしまい、(ボタンの数が54個もあるものですから)今から
またフォームを作るのも面倒なので、どなたか実行モードでシート上のコントロール
ボタンのポップヒントを表示する方法をご存知の方がいらっしゃいましたらお教え
頂けませんでしょうか。


 こんにちは

 ちょっと教えて欲しいのですが、
 「コントロールボタンにハイパーリンクのヒント設定をしました。」
 とは、どのように行ったのでしょうか?

 要件自体は、ワークシート上のコントロールにはControlTipTextというプロパティが無いので
 CommandButton1_MouseMove イベントを使って対応するとかかと思います。

 (ウッシ)

 ControlTipTextというプロパティに指定するようなヒント文字列でよいなら、

 シート上にフレーム(ActiveXControl)を配置し、その中にコマンドボタンを配置すると
 ControlTipTextプロパティが使えます。

 運用が慣れないと大変かもしれませんが、一つの方法として提案します。

 ichinose
 

ご回答ありがとうございます。

まず、ウッシ様へのお返事ですが、
「コントロールボタンにハイパーリンクのヒント設定」について以下のように設定しました。
1 メニューの「開発」を選択しデザインモードに設定
2 コントロールボタンをシート上に配置
3 コントロールボタンを選択
4 メニューの「挿入」から「ハイパーリンク」を選択
5 ハイパーリンク編集ウインドウの右上にある「ヒント設定(P)」を選択
6 「ヒントのテキスト(T)」項目にボタンの機能説明を登録
の手順で作成しています。

デザインモードではコントロールボタンにカーソルを当てると想定通り機能表示がでます。

ichinose様
ありがとうございます、やはり再配置する以外方法が無いのでしょうね。
デザインモードでは想定通りに表示されるので、TipTextプロパティはモードの
切り替えで失われてしまうのか、またはちょっとした設定でTipTextプロパティを
有効にする方法がないのか、せっかく作ったヒントを活かす方法をご存知の方が
あればと思いお伺いしました。
素人考えでは、ヒントがデザインモードで表示されるからには、プロパティは活きて
いて表示させる方法だけを何か指定すれば良いのかと考えた次第です。

(エクセル漂流者)


 デザインモードということだから、ActiveXのコマンドボタンだよね?
 で、4.ってできる?
 2010では、ハイパーリンクがグレーアウトされて選べないけど・・・・

 (ぶらっと)

ぶらっと様
ありがとうございます。
Excel2007では出来ちゃったんです。だから余計に期待しちゃったんですが・・・。

デザインモードでもTipTextが使えないなら、そういうものかと思ったところですが
デザインモードでは表示できて実行モードで表示せず、またデザインモードに戻っても
設定が消えたりせずにそのまま再度表示できているので、TipTextプロパティは有効で、
隠れた表示設定さえどうにかすれば使えるのかなぁと淡い期待を抱いている状態です。

TipTextやハイパーリンクとActiveXの何かに競合があるのかないのか深いことは分かり
ません、ただデザインモードだけでポップヒントが表示できることには何の意味もない
と思われるので、進化している2010で使えないようにしてあるということは、ActiveXの
コントロールボタンに対するハイパーリンク設定はやはり元々想定していない無理筋
なんでしょうかね。

(エクセル漂流者)


 こんにちは

 Excel2003でもメニューの「挿入」から「ハイパーリンク」設定出来ました。
 でも同じくデザインモードオフではヒント表示されないですけど。

 他のサイトで見つけたコードを修正してみたのですが、

 Private MyShape As Shape
 Private Sub CommandButton1_MouseMove _
        (ByVal Button As Integer, ByVal Shift As Integer, _
            ByVal X As Single, ByVal Y As Single)
    If MyShape Is Nothing Then
        With ActiveSheet
            Set MyShape = .Shapes.AddShape(msoShapeRectangle, _
                            CommandButton1.Left + CommandButton1.Width, _
                            CommandButton1.Top + Y, _
                            200, 15)
        End With
        'Shapeにチップテキストを表示し、一定時間待機させた上で削除
        MyShape.OLEFormat.Object.Text = _
            CommandButton1.ShapeRange.Item(1).Hyperlink.ScreenTip
        DoEvents
        Application.Wait Now + TimeValue("00:00:03")
        MyShape.Delete
        Set MyShape = Nothing
    End If
 End Sub

 こんな感じで既に作成してあるヒントのテキストを表示するのはどうでしょうか?
(ウッシ)

ウッシ様
ありがとうございます。
ウッシ様のおっしゃるようにCommandButton_MouseMoveイベントで解決する方法を二つ
エクセルに詳しい同僚から提案されました。

ひとつは、まさにオートシェイプの挿入・削除
(ただし、機能説明文は既存のポップヒントを使用せずに再度VBで指定する方法でした。)

もうひとつは以下のように機能説明文のラベルの表示・非表示切り替えでした。
Private Sub CommandButton1_MouseMove (ByVal Button As Integer, _

                                      ByVal Shift As Integer, _
                                      ByVal X As Single, _
                                      ByVal Y As Single)
  X1 = CommandButton1.Width
  Y1 = CommandButton1.Height

  If (X > 0) And (X < X1) And (Y > 0) And (Y < Y1) Then
      Label1.Visible = True
  Else
      Label1.Visible = False
  End If
End Sub

ラベルの再配置の手間を考えると、オートシェイプの挿入削除の方が既存の機能説明を
使える分だけ手間が軽くなるので優れているように見えます。なので、ウッシ様ご提案の
方法を使わせて頂こうと思います。
(Excel10に移行したときにハイパーリンクで問題でるかな??? まぁいいや。)

ウッシ様 皆様 ありがとうございました。


 解決後だけど、ずいぶん以前に、別の板に掲載されたエキスパートさんのコード。

 Sub Sample()
    Dim chrtObj As ChartObject
    Dim cShp As Shape
    Dim myShp As Shape
    Dim strComment As String

    Set myShp = ActiveSheet.Shapes("CommandButton1")
    strComment = "ひんとひんとひんと"

    With myShp
        Set chrtObj = .Parent.ChartObjects. _
            Add(.Left, .Top, .Width, .Height)
            chrtObj.OnAction = .OnAction
    End With
    With chrtObj
        .Name = "myChart_" & Split(.Name, " ")(1)
        With .Chart
            Set cShp = .Shapes.AddShape( _
                msoShapeRectangle, 0, 0, .ChartArea.Width, .ChartArea.Height)
            .ChartArea.Border.LineStyle = 0
            .ChartArea.Interior.ColorIndex = xlNone
        End With
    End With
    With cShp
        .Name = strComment
        .Fill.Visible = msoTrue
        .Fill.Transparency = 1#
        .Line.Visible = msoFalse
    End With
    With myShp.Parent.Shapes.Range(Array(myShp.Name, chrtObj.Name)).Group
        .Name = "myComment_" & Split(.Name, " ")(1)
    End With

 End Sub

 (ぶらっと)

ぶらっと 様
ありがとうございます。
私、VBのWithブロックの使い方が苦手(よく理解していない)で、

既に設定してあるヒントの機能説明文を有効利用するためには、
ウッシ様がお教えくださった
CommandButton1.ShapeRange.Item(1).Hyperlink.ScreenTipを
With cShpの.Nameに代入すれば良いのでしょうか。

ちょっと試行錯誤しながら、これから勉強させて頂きます。

ありがとうございました。

(エクセル漂流者)


 >既に設定してあるヒントの機能説明文を有効利用

 アップしたサンプルで言うと

 strComment = "ひんとひんとひんと"

 これを

 strComment = myShp.Hyperlink.ScreenTip

 で、設定済みのものを使うことができると思う。

 ところで、こちらは 2010 なんだけど、操作でコマンドボタンを選択して挿入メニュー・・・
 というのは、上でコメントしたとおりハイパーリンクが選べない状態だけど、そこに既に設定されていれば
 マウスをあてると、(デザインモードを解除しても)ちゃんと表示されるね。

 (操作では登録できないので、登録するマクロを書いて実行して確認)

 なので、現在の 2007 では、だめなようだけど、将来2010にアップすれば問題解消?

 (ぶらっと)

ぶらっと様
速やかなご返事ありがとうございます・

オートシェイプのテストをしてみたところ、表示のスピード感に欠けるところがあり
カーソルの動きが速い場合には、表示が消えないことがありました。
ラベルの表示・非表示の切り替えについても同様に(2,3個のテストですが)、
カーソルマークがクルクル回る表示までの待機時間があったり、ラベルが消えなかっ
たり思うような表示・非表示ができません。
(セルに設定したポップヒントでもデザインモード解除時には表示スピードに不満
を感じることがあります。)

些細なことですが、いずれもオペレーションにはわずらわしいので結果として機能説明
の画面表示は行わないことにしました。

ぶらっと様がテストされた 「Excel2010 ではデザインモード解除後も表示する。」には
興味がありますので、ポップヒントはこのままにしておこうと思います。

皆様 本当にありがとうございました。

(エクセル漂流者)

エクセル2007で作成したブックをエクセル2010で開いてみました。
残念ながら、セットしてあったハイパーリンクのポップヒントは表示されませんでした。
ぶらっと様のようにマクロを書いて設定するというような高度な方法をとらないと
期待通りの動きをしてくれないと分かりました。
ご報告まで。

(エクセル漂流者)


コメント返信:

[ 一覧(最新更新順) ]


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