dポイントプレゼントキャンペーン実施中!

お世話になります。

Web上で「【画像付き】Excelで画像もVLOOKUPさせたいとき。」

https://qiita.com/Cremokoroah/items/bb3bd9777604 …

というページを参照し、このページの通り画像をVLOOKUP関数のように
切り替えられるようになりました。

ここまでは問題ありません。

ですが、枠のコピーが出来ません。
※「枠」というのは表示された画像を入れ替えるセルのことです。
上記のページの言葉を引用しました。

やってみたのですがコピー元の表示中の画像が表示されたままで
「▽」ボタンでリスト表示された名前を選択することが出来るのですが
別の名前を選択しても選択した画像が表示されません。

枠をコピーした(貼り付けた)方のセルには、別の名前を付けました。
リストを再度作成するのが面倒なので、
既存のリストを利用したのですが機能しません。
※捕捉の画像の方です。
※こちらの画像はコピー元の最初の枠の設定です。

この関数の場合、画像表示用の「枠」は
最初に作成したものをコピーすることは出来なくて
毎回手作業で「枠」を作成しなければならないのでしょうか?

お手数ですが、エクセルに詳しい方、説明の上手な方、
「枠」を複数作成する時に最初に作成した「枠」をコピーして
利用出来るのか教えて下さい。

追記
感覚的には私が知識不足なだけで、コピー出来そうな気がします。

ですが根本的に出来ない場合はあきらめるので
「『枠』のコピーは出来ない」という、ご解答でもOKです。

よろしくお願いします。

「【EXCEL】画像もVLOOKUPさせた」の質問画像

質問者からの補足コメント

  • どう思う?

    コピーして貼り付けた枠の方の画像です。

    「【EXCEL】画像もVLOOKUPさせた」の補足画像1
      補足日時:2019/02/12 17:50
  • どう思う?

    解答して頂きありがとうございます。

    教えて頂いたのですが
    こちらの知識不足で動作しません
    私の方が間違っていると思うので順番に説明しますね。

    >まず、表示したい画像を一つのフォルダにまとめておきます。
    そして↓の画像のようにオートシェイプを一つだけ挿入しておきます。

    ここまでOKです。
    1)貼り付けたオートシェイプは挿入、図形、長方形です
    2)画像は「C:\A」にまとめました。

    >そのシートのシートモジュールに↓のコードをコピー&ペーストし
    まず「Sample1」を実行してください。

    3)シートの「コードの表示(V)」を開きコードを貼りつけました
    4)「Sample1」実行しました

    ですが、A列に画像ファイル名が表示されません
    エラーは発生しませんでした。

    文字数がギリギリなのでコードは画像を貼りつけておきます
    何か心当たりがありましたら、教えて頂ければ嬉しいです

    「【EXCEL】画像もVLOOKUPさせた」の補足画像2
    No.2の回答に寄せられた補足コメントです。 補足日時:2019/02/12 20:10

A 回答 (3件)

こんにちは!



お望みの方法ではないと思いますが、全くの別案でVBAでの一例です。

まず、表示したい画像を一つのフォルダにまとめておきます。
そして↓の画像のようにオートシェイプを一つだけ挿入しておきます。

そのシートのシートモジュールに↓のコードをコピー&ペーストし
まず「Sample1」を実行してください。

これでA列2行目以降にフォルダ内の画像ファイル名が表示されます。
B列にはA列最終行まで適当な名前で良いので入れておきます。
(あ、い、う、・・・でも構いません)

これでB列をダブルクリックするたびに
オートシェイプ内にA列の画像が表示されます。

Dim myPath As String, fN As String '//この行から//
Dim mySp As Shape

Sub Sample1()
 Dim cnt As Long
  myPath = "C:\Users\Public\Pictures\Sample Pictures" & "\" '//←当方PCの画像保存フォルダのパス★//
  fN = Dir(myPath & "*")
   cnt = cnt + 1
    Do While fN <> ""
     cnt = cnt + 1
     Cells(cnt, "A") = fN
     fN = Dir()
    Loop
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If Intersect(Target, Range("B:B")) Is Nothing Then Exit Sub
  If Target.Row > 1 And Target <> "" Then
   Cancel = True
    Set mySp = ActiveSheet.Shapes(1)
     mySp.Select
     myPath = "C:\Users\Public\Pictures\Sample Pictures" & "\" '//★//
     fN = Target.Offset(, -1)
     Selection.ShapeRange.Fill.UserPicture myPath & fN
     Target.Select
  End If
End Sub '//この行まで//

※ Sample1のマクロを実行するのは1回だけで大丈夫です。
尚、コード内の「★」の
>C:\Users\Public\Pictures\Sample Pictures

の部分はこちらのパスなので、お手元の実際のパスに変更してください。

※ オートシェイプの塗りつぶしを利用しているだけです。

※ B列名前は変更可能ですので、画像を表示後好みの名前にしてみてください。
A列が目障りであれば、遠く離れた列にするか、非表示にしてください。

B列セルのダブルクリックでの操作にしていますが、
チェンジイベントなどを使えばリスト表示を利用することも可能です。

こちらで勝手に考えた方法なので、
ご希望の方法でなかったら無視してください。m(_ _)m
「【EXCEL】画像もVLOOKUPさせた」の回答画像2
この回答への補足あり
    • good
    • 1
この回答へのお礼

Thank you

解答して頂きありがとうございます。

捕捉をアップしてしまいましたが、
確認したところファイルパスの扱いを間違っていました。
※余計なところまで消してしまっていました。

丁寧に説明して頂いたのに、読み違えていしまいすいません。

今回はすごいマクロをありがとうございます。

これはみんながエクセル上で求めている機能なので、
素晴らしいです。

いつも教えて頂きありがとうございます。
もしかしたら、、、部分的にカスタムしたくなるかもしれません&
その時に手に負えなければ、またこちらで質問するかもしれないです(笑)。

今回は素晴らしいマクロをありがとうございます。
機会がありましたら、またお願いします。

お礼日時:2019/02/12 20:50

No.2です。



補足を拝見しました。
「パス」の確認方法で間違いが少ないやり方を説明します。

① 画像を保存しているフォルダを開く
② 開いたフォルダ内のファイル(どれでも構いません)のアイコンの上で右クリック → プロパティ
③ そのファイルの「プロパティ画面」が表示されます。

その画面の「場所」がフォルダのパスになりますので、

その部分をドラッグ&コピー → コードに貼り付け!

ファイルのフルパスは
フォルダのパス & \ & ファイル名

になりますので、
前回のコードの「myPath」の部分には
コピー&ペーストしたものと、「\」が必要です。
前回のコードも
>"C:\Users\Public\Pictures\Sample Pictures" & "\"
のように最後に「\」を付け加えています。

おそらくこの部分でファイルが存在しない!という判断をされていると思います。

※ 今回はフォルダ内のファイルをすべて表示するようにしていますので、
ファイル名の指定は必要ありません。

今一度確認してみてください。m(_ _)m
    • good
    • 1
この回答へのお礼

助かりました

何回もアドバイスして頂き、ありがとうございます。

入れ違いになったので何かカスタマイズしたい
ところがないかチェックしていました。

ですが今のところ、このコードで満足です(笑)。
いつも本当にありがとうございます。

追記
ファイルパスの件、確認して頂きありがとうございます。

お礼日時:2019/02/12 21:25

VLOOKUP関数では書式をコピーすることはできませんよ。


VLOOKUP関数を使ったセルで独自に「条件付き書式」を作って希望するようにセルを修飾するようにしましょう。
    • good
    • 0
この回答へのお礼

解答して頂きありがごうございます。

>VLOOKUP関数では書式をコピーすることはできませんよ。
VLOOKUP関数を使ったセルで独自に「条件付き書式」を作って希望するようにセルを修飾するようにしましょう。

おっしゃるとおりです。
それは良いのですが、この質問ではVLOOKUP関数を使っていません。

説明が下手ですいません。
お手数でなければリンク先のサイトを一読して頂けると
質問の意味がわかると思います。

今回は解答して頂きありがとうございます。

お礼日時:2019/02/12 18:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています