• ベストアンサー

条件に一致したときに画像を表示したいのですが・・。

お世話になっております。 Excelでセルの値に一致したときに指定した画像を表示したいのです。 具体的に申しますと、 仮にA1が1のときに「a」という画像を表示し、 A1が2のときに「b」という画像を表示したいのです。 そのときの画像は、一定の場所で表示できるようにしたいのです。 イメージとしては、 IF関数を用いたときに、条件に一致したときに文字列や値を表示 するような感じです。 どんな方法でもかまいませんのでよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • bonaron
  • ベストアンサー率64% (482/745)
回答No.7

失礼しました。 別シートだと、シートも指定しなければいけませんね。     If Sheet1.Range("A1").Value = 1 Then   '←      'A1の値が1になったとき「a」を表示「b」を非表示。      Sheet1.Shapes("図 1").Visible = msoTrue      Sheet1.Shapes("図 2").Visible = msoFalse     ElseIf Sheet1.Range("A1").Value = 2 Then '←

kyjelly
質問者

お礼

お礼が遅くなってしまい申し訳ありません!! おかげさまで無事作成することができました!! 本当にありがとうございます。 今後ともよろしくお願いいたします。

その他の回答 (6)

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.6

#3です。 > これはどこに記載するのでしょうか? コンボボックスを右クリックして「マクロの登録」をクリック。 マクロ名のところに「ドロップ1_Change」とか表示されていますね。 マクロの保存先を「作業中のブック」にして「新規作成」をクリック。   Sub ドロップ1_Change()        ' ここでカーソルが点滅   End Sub となりますので カーソル位置に貼り付けます。 Worksheet_Changeイベントの If ~ End If までですよ。念のため。

kyjelly
質問者

補足

ありがとうございます。 同一シート上にコンボボックスを作成した場合にはうまく表示することができました。 しかしながら、別シートにコンボボックスを作成したところ画像は表示できなくなってしまいました。(コンボボックスを変更したとき) LinkedCellに直接値を入力した場合には画像は表示されます。 この場合はどうしたらよろしいのでしょうか? よろしくお願いいたします。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.5
kyjelly
質問者

お礼

回答ありがとうございます。 http://www.officetanaka.net/excel/function/tips/tips14.htm​ はイメージとぴったりです!! ですが、せっかくVBAでがんばっていますのでもう少しこちらでがんばって見ます。 それでも、とてもよい勉強になりました!!

回答No.4

フォームのコンボボックスについて言及していませんでしたね。 すでにお答えが出ているようですので、それを実行して見てください。

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.3

> コンボボックスを用いてセルに値を入力した場合、 > 画像が表示されません。 コンボボックスの LinkedCellに「A1」を指定しているということでしょうか? 「コントロールツールボックス」のコンボボックスが同じシート上にあることを条件として、 Private Sub ComboBox1_Change() Call Worksheet_Change(Range("A1")) End Sub を追加してください。 ComboBox1 の部分は実際の名前にしてください。 ついでに Activateイベントも Private Sub Worksheet_Activate() Call Worksheet_Change(Range("A1")) End Sub にすると、次にシートが選択されたときも、表示されるようになります。 「フォーム」のコンボボックスの場合はマクロを作成 Sub ドロップ1_Change()   '実際の名前で End Sub の間に Worksheet_Change イベントのコードを貼り付ければ動くと思います。

kyjelly
質問者

補足

ご回答ありがとうございます。 質問ですが、フォームのコンボボックスを使用していますので、 >「フォーム」のコンボボックスの場合はマクロを作成 >Sub ドロップ1_Change()   '実際の名前で だけを記載すればよろしいのでしょうか? また、これをVBAのどこに記載すればよいのでしょうか? また、 >End Sub >の間に >Worksheet_Change イベントのコードを貼り付ければ動くと思います。 これはどこに記載するのでしょうか? 初心者で申し訳ありませんがよろしくお願いいたします。

回答No.2

#1です。 ---引用-------------------- そこで、追加なのですが、セルに値を入力するのではなく、 コンボボックスを用いてセルに値を入力した場合、 --------------引用終わり--- 「セルに直接値を入力しない」ということは理解できましたが、「コンボボックス」がどのコンボボックスを指しているのかがいまいち特定できませんでしたが、以下に情報を記載します。 ・セルA1に入力規則のリストによるコンボもどきをご使用の場合   #1で記載した方法で問題ありません。 ・コントロールボックスツールボックスのコンボボックスをご使用の場合   コンボボックスを操作するとA1に選択した値が入力される(マクロ使用)のであれば、#1で記載した方法で問題ありません。 #1で提示した方法はA1の値が何か、を条件にしていますので、基本的にA1の値が変わる方法ならどの場合でも問題ないはずです。 もう少し詳しく状況を教えてください。

kyjelly
質問者

補足

何度も申し訳有りません。 コンボボックスは、フォームの中にあるコンボボックスを使用しており、コントロールの書式設定のコントロールでリンクするセルをセルA1に設定しています。 で、フォームのコンボボックスは別のシートに作成したいと思っております。 とりあえず、同じシート内に上記コンボボックスを作成し、セルA1に値が入力されるように試したのですが、画像が変更されないといった状況です。 申し訳有りませんがよろしくお願いいたします。

回答No.1

ワークシート関数では実現できないと思いますので、マクロ(VBA)を用いた方法を提示します。 ・要件   Sheet1のA1が1のとき「a」の画像を表示する。   Sheet1のA1が2のとき「b」の画像を表示する。 ・実装   1.任意の位置に「a(仮に図 1)」「b(仮に図 2)」の画像を置く。   2.VBEを開いて(Alt + F11)、左上のツリーからSheet1を選択して、右側にエディタを表示させる。   3.以下のコードを貼り付ける。    Private Sub Worksheet_Activate()     '最初はどちらの画像も非表示。     Sheet1.Shapes("図 1").Visible = msoFalse     Sheet1.Shapes("図 2").Visible = msoFalse    End Sub        Private Sub Worksheet_Change(ByVal Target As Range)     If Range("A1").Value = 1 Then      'A1の値が1になったとき「a」を表示「b」を非表示。      Sheet1.Shapes("図 1").Visible = msoTrue      Sheet1.Shapes("図 2").Visible = msoFalse     ElseIf Range("A1").Value = 2 Then      'A1の値が2になったとき「a」を非表示「b」を表示。      Sheet1.Shapes("図 1").Visible = msoFalse      Sheet1.Shapes("図 2").Visible = msoTrue     Else      'A1の値が1でも2でもないとき「a」も「b」も非表示。      Sheet1.Shapes("図 1").Visible = msoFalse      Sheet1.Shapes("図 2").Visible = msoFalse     End If   End sub この状態でSheet1のA1に1と入力すると、「a」の画像が表示されるはずです。 ブックにマクロ実行の許可を設定しておいてください。

kyjelly
質問者

補足

早速の回答ありがとうございます。 実際に、上記VBAで画像の非表示は可能になりました。 そこで、追加なのですが、セルに値を入力するのではなく、 コンボボックスを用いてセルに値を入力した場合、 画像が表示されません。 この場合にはどのようにしたらよろしいのでしょうか? よろしくお願いいたします。

関連するQ&A