エクセルで画像を自動貼り付けして、セルの大きさに合わせて縮小・拡大するマクロを作りました。
そこで、挿入した画像に上にポインタを持っていくと、画像の挿入元のファイル名を表示させたいと思っています。
最初は画像の裏にあるセルにコメントをつければいいと思っていたのですが
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ちょっと先の未来クイズ第2問
9月9日(月)に発表される「第3回子どもマネー川柳」に入賞する川柳を考えてこちらに投稿してください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
excel、画像にカーソルを合わせるとタイトル・説明が表示されるようにするには?
Excel(エクセル)
-
オートシェイプ図形をクリックでコメントを表示したい
Excel(エクセル)
-
エクセルでセルにポインタすると表示されるコメントみたいなもの
Excel(エクセル)
-
-
4
セルにカーソルを合わせると文字を表示させるVBA
Excel(エクセル)
-
5
Excelのシート上のShapeにイベントは設定できる?
Excel(エクセル)
-
6
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
7
コマンドボタンやイメージにマウスをのせるとボタン名を表示したい
Excel(エクセル)
-
8
エクセル上に画像を貼り付けて、そこにマウスポインタを合わせると拡大表示されるようにするには
Excel(エクセル)
-
9
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
10
EXCEL 一部のオブジェクトだけを固定したい
Excel(エクセル)
-
11
Excelで、ボタンにコメントをつけたい。
Excel(エクセル)
-
12
カーソルを当てると説明の枠と文字が出ますね
Excel(エクセル)
-
13
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
14
VBA プロシージャの名前の取得
その他(Microsoft Office)
-
15
Excelに貼り付けたオブジェクトにコメントをつけたい
Excel(エクセル)
-
16
Excel 図形へのハイパーリンク
その他(Microsoft Office)
-
17
セルをクリックすると付箋のようなものが表示されるのだが。
Excel(エクセル)
-
18
Excelでのコメント表示位置
Excel(エクセル)
-
19
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
20
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBからエクセルのテキストボ...
-
ACCESS2010 ActiveXコントロー...
-
C# TEXTが空白であるLABELは何...
-
Wordテキストコントロールが未...
-
checkbox付きListViewで デフ...
-
テキストボックス(VBA)でEnter...
-
DataGridViewで行の展開みたい...
-
VB6でLabelの最前面にText Box...
-
エクセル VBA ユーザーフォーム...
-
エクセルの画像にツールチップ...
-
C# のテキストボックスデザイン...
-
MSFlexGrid
-
C# アプリ終了時に設定を記憶...
-
ExcelテキストボックスのTab順...
-
エクセル入力規制リスト行数
-
VC++でエクセルのような表
-
Enabled=Falseのテキストボック...
-
ADOのCursorLocationプロパティ
-
VB.NETで縦書表示をしたいので...
-
リストボックスで任意の行を表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックス(VBA)でEnter...
-
ADOのCursorLocationプロパティ
-
エクセルの画像にツールチップ...
-
Enabled=Falseのテキストボック...
-
VB6でLabelの最前面にText Box...
-
Wordテキストコントロールが未...
-
コンボボックスの高さを変更し...
-
デザインモードを解除すると消...
-
DataGridViewで行の展開みたい...
-
C# TEXTが空白であるLABELは何...
-
VBからエクセルのテキストボ...
-
MSFlexGrid
-
checkbox付きListViewで デフ...
-
ACCESS2010 ActiveXコントロー...
-
ユーザーフォームに日付を表示...
-
エクセル入力規制リスト行数
-
VB.NETで縦書表示をしたいので...
-
チェックボックスの文字色の変え方
-
VC++のコンボボックスの各項目...
-
MFCでbitmapを背景にしてstatic...
おすすめ情報