![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
Excel2007のVBAで以下のことは可能でしょうか?
Sheet1の上にコンボボックス(アイテムリスト)とコマンドボタン(配置用ボタン)を設置しています。
コンボボックスよりユーザーがアイテムを選択してコマンドボタンを押すことで対応するアイテムの画像をシートに挿入します。
シートに挿入する画像は、最大100アイテムを予定しています。
困っている部分が、挿入したアイテムをユーザーがマウスでクリックしたときに
VBAでどの画像が選択されたかを判断することは可能でしょうか?
アイテムがクリックされると同時にクリックされたアイテムのコードや名称等の諸元データを特定のセルに表示をしたいという事が行いたいのです。
以上、何かヒントや解決方法があればご教授願います。
図の挿入に関しては下記のロジックで挿入しています。
Private Sub CommandButton1_Click()
dim pc(100) as shape
dim flname as string
'画像のファイル名は、"pic" + コード + ".jpg"
'A1にはコンボボックスで選択されたコードが設定されています。
flname = "pic" & Worksheets("sheet1").Range("a1").Value & ".jpg"
'idxはGlobal変数です。
idx = idx + 1
Set pc(idx) = ActiveSheet.Shapes.AddPicture(Filename:=flname, LinkToFile:=True, savewithdocument:=False, Left:=Selection.Left, Top:=Selection.Top, Width:=100#, Height:=100#)
end sub
![「ExcelのVBAで」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/5/474450_5497bb9ed3667/M.jpg)
No.2ベストアンサー
- 回答日時:
>Set pc(idx) = ActiveSheet. ・・・・・
'取込写真に代替テキスト設定
With pc(idx)
'取込写真に代替テキスト設定
.AlternativeText = アイテムのコードや名称等の諸元データ
'写真をクリックしたときにShapeClick プロシージャを
'実行するようにします。
.OnAction = "ShapeClick"
End With
Sub ShapeClick()
特定セル.Value = ActiveSheet.Shapes(Application.Caller).AlternativeText
End Sub
この回答への補足
watabe007様 回答ありがとうございます。
回答して頂いた内容で試したところ、無事解決しました。(画像をクリックした際に特定セルに思惑通り諸元が表示出来ました。)
ただしこの方式の場合、新たな問題が発生しました。(Excelの仕様で仕方が無いのかもしれませんが)
というのも画像をクリックした時に今までだと画像が変更できる状態(移動やリサイズ)だったものがクリックイベントが優先されるためか
画像が移動もリサイズも出来ない状態になりました。
マウスの右ボタンを押せば、今まで通り移動やサイズ変更が可能になることは確認できたのですが、使う人の都合で出来れば右ボタンは
使いたく無いというのが希望です。
何か他に解決方法はありませんでしょうか?
上記補足での問題、自己解決しました。
ShapeClick()のサブルーチンの最後に
ActiveSheet.Shapes(Application.Caller).Select
とすると、画像が選択した状態(移動やリサイズ可能)になりました。
ただし、新たな問題が発生しました。
同じ画像を挿入した場合、画像を選択すると一番最初に挿入した画像が選ばれてしまい、2番目以降の画像が選択できなくなりました。
原因は、画像挿入時に同じファイル名を使用している為、Excel上の画像の名前が同じ名前になっている為だとまでは検討がつきました。
が、どうやって解決出来るのか悩んでいます。
何か良い解決策があればご教授下さい。
画像の挿入時に下記の命令で行っていますが、この場合、同じ画像を挿入した場合、ファイル名が同じとなり区別がつかなくなっていると思われます。
ActiveSheet.Shapes.AddPicture(Filename:=flname, LinkToFile:=True, savewithdocument:=False, Left:=Selection.Left, Top:=Selection.Top, Width:=100#, Height:=100#)
No.3
- 回答日時:
コンボボックス関係ないのね……。
先に良い回答が出て居ますが、私も各シェイプのAlternativeText に情報を持たせた方が良いと思います。
AlternativeText は、本来はブラウザが画像を読み込んでいる間に代わりに表示する文字列ですが、ここに諸元データを入れてしまっても問題ないでしょう。
この回答への補足
mt2008様 当方の拙い質問で申し訳ありませんでした。
ただ、watabe007様の回答の補足に追記させて頂きましたがAlternativeTextの方式の場合、新たな問題が発生しました。
他に何か解決策があればご教授願います。
自己解決しました。
諸元データを書き込む際に.nameにユニークな名前を与えて
識別出来ました。
アドバイス頂いた方々ありがとうございました。
No.1
- 回答日時:
シートとコンボボックスの連係が良く判らないと言うことでしょうか?
VBAじゃないですが、ご参考までに……。
アイテム名とコードが並んだリストはシート上に有りますよね。
例えば、A10:B15にそのリストがあるとします(A列がアイテム名、B列がコード)。
コンボボックスのプロパティにListFillRangeと言う項目がありますので、ここに「Sheet1!A10:A15」と入力します。
次にLinkedCellに、「Sheet1!A2」と入力します。
これで、コンボボックスのリストにはA10:A15の項目が表示され、選択されたアイテムはA2に表示されます
コードを表示したいなら、A2の値を使って、次のセル式を表示したいセル(A1?)に
=VLOOKUP(A2,A10:B15,2,FALSE)
これ以外の諸元データは何を指しているのか不明なので省略します。
まったく的外れの回答でしたらごめんなさい。
![「ExcelのVBAで」の回答画像1](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/2/1241782_5497df9b9b304/M.jpg)
この回答への補足
mt2008様 回答ありがとうございました。
ご回答頂いた内容は、今回の問題箇所と違う部分がありますので質問を補足させて頂きます。
コンボボックスより選択したアイテムの画像をコマンドボタンCLICK時にシート上に挿入します。
挿入されるアイテム数は100アイテムとします。
ユーザーが挿入されたアイテムをマウスでクリックした時にシートの左側に諸元を表示したいのが要件です。
問題点としては、挿入した画像のイベントをどうやって拾うのか?(イベントが発生するのか?)
イベントが発生し、クリックした画像が特定できればご回答頂いた内容の様にvlookup関数やVBAでシートに諸元を表示する事は可能だと思っています。
画面のサンプルで説明すると、ユーザーはコンボボックスより赤色と青色の画像を選択し配置しました。
配置した青色の画像をクリックする事によりシート左側に諸元を表示したいと言う事です。(赤い画像を選べば赤の画像の諸元を表示)
まだ説明不足な点があると思いますが宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マリオカートはアイテム次第で...
-
アイテム の意味がわかりませ...
-
googleドライブ 共有フォルダ ...
-
ボンバーマンにて、時限爆弾は...
-
Play Station Homeのトロフィー
-
モンストの モンスポットのアイ...
-
パラサイトイブのアイテム
-
ドラゴンクエスト8で…
-
PS2 ドラクエ8 名もなき小島 ...
-
ポケモンホワイト2
-
Google Playで予約購入した漫画...
-
ソーシャルゲームのガチャについて
-
Outlook Expressの保存フォルダ
-
【モンハン】受け渡しできるア...
-
SFC版の「スーパーマリオカート...
-
PSPで文字化け?
-
FF10のミヘン街道・北側 ミヘ...
-
iアプリのドラクエモンスターズ
-
wedo。ウィーデューはどういう...
-
アンジェリークデュエットの攻略
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マリオカートはアイテム次第で...
-
アイテム の意味がわかりませ...
-
googleドライブ 共有フォルダ ...
-
FF10のミヘン街道・北側 ミヘ...
-
PS2 ドラクエ8 名もなき小島 ...
-
Google Playで予約購入した漫画...
-
パラサイトイブのアイテム
-
ドラゴンクエスト8で…
-
モンストの モンスポットのアイ...
-
ポケモンホワイト2
-
SFC版の「スーパーマリオカート...
-
PS4のモンハンワールドの砥石の...
-
データコンバート(続編への引...
-
FF4 アイテム管理
-
ボンバーマンにて、時限爆弾は...
-
FF7 クラウド 究極リミット技...
-
スカイリム 多くの意見ください
-
どくどくだまは消費アイテムな...
-
wedo。ウィーデューはどういう...
-
Play Station Homeのトロフィー
おすすめ情報