
エクセルで画像を自動貼り付けして、セルの大きさに合わせて縮小・拡大するマクロを作りました。
そこで、挿入した画像に上にポインタを持っていくと、画像の挿入元のファイル名を表示させたいと思っています。
最初は画像の裏にあるセルにコメントをつければいいと思っていたのですが
2000だと、画像の上にマウスポインタを置いても、画像を選択しても、コメントが表示されませんでした。
どうやら、裏のセルの見えている部分にポインタを置かないと表示されないみたいです。
(2007だと画像の裏にあるセルにコメントを付けておけば、画像の上にマウスポインタを置くとコメントが表示されます)
エクセル2000で画像にツールチップ(ファイル等の上にマイスポインタを置くと表示される黄色いコメントの事)を表示させる方法があれば教えてください。
No.2ベストアンサー
- 回答日時:
VBAやマクロについてはど素人以下なので、まるっきり的はずれな方向からアプローチしますが・・・。
(ご希望から離れているとは重々承知しておりますが、もしかしたらってことで。)
挿入した画像を選択した状態で「ハイパーリンクの編集」を出し、「ヒント設定」ボタンから文字列を入力すると、画像の上にマウスカーソルを乗せると、「ヒント設定」で入力した文字列がチップ表示されます。
ただ、マウスカーソルが画像にのったとたんに「指」になりますので、違和感もかなりあります。
(2003で試しましたが、2000でも同じ機能はあったと思います。)
この回答への補足
中々確認とれず、返事が遅れてしまいました。申し訳ないです。
2000で確認してみたところ、確かにそういう昨日はありましたが、結局写真の上からマウスポインタを当てても、クリックして選択しても、表示はされませんでした。
(裏のセルが見えている所に当てるとできました)
やはり2000では無理みたいですね。
すいません。画像にハイパーリンクつけられること知らなかったので、
裏のセルにハイパーリンクつけてました。
ちゃんとできました。名前けしたら、指マークにもならないですし、ちゃんとクリックもできます。
完璧な答えだったのにお礼してあげられなくて申し訳ありませんでした。
No.3
- 回答日時:
te12889さん案
>挿入した画像を選択した状態で「ハイパーリンクの編集」を出し、「ヒント設定」ボタンから文字列を入力..
~~~~~~~~~~~
Sub Macro1()
Dim s As String
With ActiveSheet
s = .Shapes(1).TopLeftCell.Address(external:=True)
.Hyperlinks.Add Anchor:=.Shapes(1), _
Address:="", _
SubAddress:=s, _
ScreenTip:="xxx"
End With
End Sub
xl2000sp3ではokです。
おぉぉ、そうかte12889さんが言っていたのはこういう事だったのか!
裏のセルじゃなくて、画像にハイパーリンクを貼り付ければよかったのかー
ずっと勘違いしていました。申し訳ありません。
しかも、ハイパーリンクのリンク先消すと、ツールチップのみ表示される・・・!!
これならいけるかも・・・
ありがとうございます。
せっかく教えてくれてなんなんですが、ベストアンサーは
原案のte12889さんに上げたいと思います。
申し訳ありません~
No.1
- 回答日時:
一応の総括をして見ますが、覆す回答が出れば良いのですが。
VBのフォームなどではでは別です。
ーー
エクセルで、2003までは
(1)シートに貼り付けるコントロールにはToolTip的なプロパティは無い
(2)フォームの上に貼り付けるコントロールには、ControlTipTextがあるものがある(ボタン、TextBoxなど)
(3)挿入ー図ーファイルからシートに張り付くオブジェクトにはそのプロパティはない
(4)シートのセルには「コメントの挿入」で、それらしき仕組みが出来る(ちなみに)
ーー
だから
代替物を考えないといけないが、VBAの範囲では、カーソル位置の補足と、テキストボックス的図形を出す、マウスが写真表示コントロールを離れると隠すは難しい。
ーーー
http://www.moug.net/tech/exvba/0120008.htm
では、シートにImage1を貼り付け、MouseMoveイベントで、マウスがコントロールの上にあるとき、別途図形のShapeを表示して、適当な所定時間経過後消すという方法が紹介されている。
ーー
上記にある例について、下記でテストしてみた
Imageコントロールに画像(写真)を持ってくるコードは別途必要。
Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'If Not MyShape Is Nothing Then Exit Sub '複数表示防止
'Shapeを描画、テキストを表示して一定時間待機後削除
With ActiveSheet
Set MyShape = .Shapes.AddShape(msoShapeRectangle, _
Image1.Left + X, _
Image1.Top + Y, _
200, 15)
End With
'Shapeにテキストを表示し、一定時間待機させた上で削除
MyShape.OLEFormat.Object.Text = "この写真はXXの写真です"
DoEvents
Application.Wait Now + TimeValue("00:00:01")
MyShape.Delete
Set MyShape = Nothing
End Sub
ーーーーーーーーーーーーー
ただしImageコントロールが写真の数だけシート上に張り付き、VBAで、VBのコントロール配列のような仕組みが無いので、どのImageでマウスムーブが起こったか、コード的に簡潔に捉えにくい(VB.NETでは出来るようになった仕組みか)こと、各Imegeと写真名などの対応をどうつけるか、難しい点があって,利用は難しいのでは。
この回答への補足
お礼をした後で補足してしまいます。申し訳ありません
ちょっと処理を軽くできないか、色々試してみてきづいたんですが、聞いてもよろしいでしょうか?
なぜか、一度目のDoEventsが反応していないのか、上の処理を一回目行っただけではまったく表示してくれません。
(マウスを一秒未満だけ動いた場合表示されません)
マウスを1秒以上ぐりぐり動かし続けて二回目の処理に突入するとなぜか表示されます。
そこで、DoEventsの所を
DoEvents
DoEvents
と二回続けて処理させるようにしたら、一回目で映るようになりました。
これは私のパソコンのスペックが足りなく処理落ちを起こしているのが原因でしょうか?
また、これの問題点として、待機処理時間中、CPUを食いすぎるという点があります。
1秒だけなら問題ないのですが、さすがに一秒だと見づらいので2秒、3秒と増やしてみたんですが、3秒で50%に到達してしまいます。
それを踏まえ表示時間を2秒に抑え、かつ、3秒間の実行を受け付けないインターバルを置く工夫をしてみました。
これよりもっと、処理を軽くすることは可能でしょうか?
以下がそのコードです
Dim a As Integer
Dim t As Long
Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'If Not MyShape Is Nothing Then Exit Sub '複数表示防止
'Shapeを描画、テキストを表示して一定時間待機後削除
Debug.Print (Timer - t)
If (Timer - t) < 5 Then Exit Sub
t = Timer
Dim myshape As Shape
With ActiveSheet
Set myshape = .Shapes.AddShape(msoShapeRectangle, _
Image1.Left + X, _
Image1.Top + Y, _
200, 15)
End With
'Shapeにテキストを表示し、一定時間待機させた上で削除
myshape.OLEFormat.Object.Text = "この写真はXXの写真です"
DoEvents
DoEvents
Application.Wait Now + TimeValue("00:00:02")
myshape.Delete
Set myshape = Nothing
a=a+1
Debug.Print "a=" & a
End Sub
ちなみにテストプレイしたのは自宅のパソコンのみで
会社の方ではまだ行っていないです。
参考までに私の(自宅の)パソコンのスペックは
OS XP
CPU Core2Duo E8400 3.0GHz
グラフィックボード GeForece GT220
メモリ 2G
エクセル 2007 12.06557.5000 SP2 MSO (12.0.6554.5001)
です
回答ありがとうございます。ちょっと確認するのが遅れてしまいました。
これはこれで、良いんですけど、ちょっと重たい気がします。
CPU(表示させまくると50%超えるんで)
自宅のパソコンでこれなのですから、会社のパソコンで皆に使わせるのは不安が残りますねー
しかし、できないこともないことが分かったのでよかったです。
ありがとうございましたー
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル、画像ファイル名の書かれたセル(複数個所)に画像を一括で表示させる方法 1 2023/04/19 00:19
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- Excel(エクセル) エクセルにサムネイル画像組み込み 2 2022/09/02 17:13
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- AJAX 自作の地図をグーグルマップのようにしたい 3 2022/11/15 11:53
- Excel(エクセル) エクセルでの操作方法 1 2022/11/15 14:09
- Excel(エクセル) エクセルで日付が入っているセルを一定の法則に従って違うセルに表示したい 2 2022/04/04 17:16
- 防犯カメラ・監視カメラ・小型カメラ VHSを高画質な動画ファイルにしたいです。 3 2022/05/06 12:08
このQ&Aを見た人はこんなQ&Aも見ています
-
excel、画像にカーソルを合わせるとタイトル・説明が表示されるようにするには?
Excel(エクセル)
-
オートシェイプ図形をクリックでコメントを表示したい
Excel(エクセル)
-
エクセルでセルにポインタすると表示されるコメントみたいなもの
Excel(エクセル)
-
-
4
コマンドボタンやイメージにマウスをのせるとボタン名を表示したい
Excel(エクセル)
-
5
セルにカーソルを合わせると文字を表示させるVBA
Excel(エクセル)
-
6
Excelで、ボタンにコメントをつけたい。
Excel(エクセル)
-
7
エクセル上に画像を貼り付けて、そこにマウスポインタを合わせると拡大表示されるようにするには
Excel(エクセル)
-
8
Excelのシート上のShapeにイベントは設定できる?
Excel(エクセル)
-
9
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
10
【EXCEL VBA】オートシェイプをクリックした時にそのオートシェイプの名前を取得したい
Visual Basic(VBA)
-
11
Excelでセルをクリックするたびに表示を切り替えるには?
Excel(エクセル)
-
12
コンボボックス内の文字サイズ変更
Excel(エクセル)
-
13
エクセルで、オブジェクトの選択を禁止する方法。
Excel(エクセル)
-
14
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
15
セルの文字を「印刷時だけ非表示」にしたいです。
Excel(エクセル)
-
16
エクセルVBA テキストボックスへのセットフォーカスについて
Visual Basic(VBA)
-
17
文字列からタブコードを取り除きたい
Visual Basic(VBA)
-
18
EXCELのSheet番号って変更できる!?
Visual Basic(VBA)
-
19
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
20
エクセルマクロで、別のブックが開いているかを判定したいのですが。
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Wordテキストコントロールが未...
-
VB.NET ToolTipの表示条件について
-
MSFlexGrid
-
VB6でLabelの最前面にText Box...
-
テキストボックス(VBA)でEnter...
-
エクセルの画像にツールチップ...
-
ユーザーフォームに日付を表示...
-
checkbox付きListViewで デフ...
-
エクセル VBA ユーザーフォーム...
-
エクセル入力規制リスト行数
-
Enabled=Falseのテキストボック...
-
MFCでbitmapを背景にしてstatic...
-
{ CONTROL Forms.Label.1}が...
-
VB6でPNGファイルを扱うには?
-
C# TEXTが空白であるLABELは何...
-
チェックボックスの文字色の変え方
-
コンボボックスの高さを変更し...
-
VBからエクセルのテキストボ...
-
MSFlexGridとDataGridの違いに...
-
ADOのCursorLocationプロパティ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームに日付を表示...
-
テキストボックス(VBA)でEnter...
-
エクセルの画像にツールチップ...
-
Wordテキストコントロールが未...
-
コンボボックスの高さを変更し...
-
Enabled=Falseのテキストボック...
-
ADOのCursorLocationプロパティ
-
MSFlexGrid
-
checkbox付きListViewで デフ...
-
VBからエクセルのテキストボ...
-
PictureBoxの背景色変更(VB.NET)
-
VB.NETで縦書表示をしたいので...
-
デザインモードを解除すると消...
-
エクセル入力規制リスト行数
-
C# アプリ終了時に設定を記憶...
-
DataGridViewで行の展開みたい...
-
VB6でLabelの最前面にText Box...
-
VB.NET ToolTipの表示条件について
-
C# TEXTが空白であるLABELは何...
-
チェックボックスの文字色の変え方
おすすめ情報