[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『コントロールボタンに設定したヒントの表示方法』(エクセル漂流者)
EXCEL2007
Windous7
シート上にコントロールボタンを配置し、クリックイベントでいろいろ動作させる 予定でいます。 そこで、どのボタンがどのような機能を持っているかの説明をポップヒントで表示 させようとコントロールボタンにハイパーリンクのヒント設定をしました。
デザインモードでは思ったとおり表示されているのですが、いざ使おうとデザイン モードを解除したところヒントが表示されなくなってしまいました。 もともとコントロールボタンはフォームで使用するものなのでしょうが、シート上 に既にボタンを配置してしまい、(ボタンの数が54個もあるものですから)今から またフォームを作るのも面倒なので、どなたか実行モードでシート上のコントロール ボタンのポップヒントを表示する方法をご存知の方がいらっしゃいましたらお教え 頂けませんでしょうか。
こんにちは
ちょっと教えて欲しいのですが、 「コントロールボタンにハイパーリンクのヒント設定をしました。」 とは、どのように行ったのでしょうか?
要件自体は、ワークシート上のコントロールにはControlTipTextというプロパティが無いので CommandButton1_MouseMove イベントを使って対応するとかかと思います。
(ウッシ)
ControlTipTextというプロパティに指定するようなヒント文字列でよいなら、
シート上にフレーム(ActiveXControl)を配置し、その中にコマンドボタンを配置すると ControlTipTextプロパティが使えます。
運用が慣れないと大変かもしれませんが、一つの方法として提案します。
ichinose
まず、ウッシ様へのお返事ですが、
「コントロールボタンにハイパーリンクのヒント設定」について以下のように設定しました。
1 メニューの「開発」を選択しデザインモードに設定
2 コントロールボタンをシート上に配置
3 コントロールボタンを選択
4 メニューの「挿入」から「ハイパーリンク」を選択
5 ハイパーリンク編集ウインドウの右上にある「ヒント設定(P)」を選択
6 「ヒントのテキスト(T)」項目にボタンの機能説明を登録
の手順で作成しています。
デザインモードではコントロールボタンにカーソルを当てると想定通り機能表示がでます。
ichinose様
ありがとうございます、やはり再配置する以外方法が無いのでしょうね。
デザインモードでは想定通りに表示されるので、TipTextプロパティはモードの
切り替えで失われてしまうのか、またはちょっとした設定でTipTextプロパティを
有効にする方法がないのか、せっかく作ったヒントを活かす方法をご存知の方が
あればと思いお伺いしました。
素人考えでは、ヒントがデザインモードで表示されるからには、プロパティは活きて
いて表示させる方法だけを何か指定すれば良いのかと考えた次第です。
(エクセル漂流者)
デザインモードということだから、ActiveXのコマンドボタンだよね? で、4.ってできる? 2010では、ハイパーリンクがグレーアウトされて選べないけど・・・・
(ぶらっと)
デザインモードでも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
こんな感じで既に作成してあるヒントのテキストを表示するのはどうでしょうか? (ウッシ)
ひとつは、まさにオートシェイプの挿入・削除
(ただし、機能説明文は既存のポップヒントを使用せずに再度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
(ぶらっと)
既に設定してあるヒントの機能説明文を有効利用するためには、
ウッシ様がお教えくださった
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.