プロが教えるわが家の防犯対策術!

お世話になっております。

Excelでセルの値に一致したときに指定した画像を表示したいのです。
具体的に申しますと、
仮にA1が1のときに「a」という画像を表示し、
A1が2のときに「b」という画像を表示したいのです。
そのときの画像は、一定の場所で表示できるようにしたいのです。

イメージとしては、
IF関数を用いたときに、条件に一致したときに文字列や値を表示
するような感じです。

どんな方法でもかまいませんのでよろしくお願いいたします。

A 回答 (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 '←
    • good
    • 1
この回答へのお礼

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

お礼日時:2007/10/24 21:47

#3です。


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

この回答への補足

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

補足日時:2007/10/24 10:52
    • good
    • 0
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/10/23 21:12

フォームのコンボボックスについて言及していませんでしたね。


すでにお答えが出ているようですので、それを実行して見てください。
    • good
    • 0

> コンボボックスを用いてセルに値を入力した場合、


> 画像が表示されません。
コンボボックスの 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 イベントのコードを貼り付ければ動くと思います。

この回答への補足

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

補足日時:2007/10/23 20:59
    • good
    • 0

#1です。



---引用--------------------
そこで、追加なのですが、セルに値を入力するのではなく、
コンボボックスを用いてセルに値を入力した場合、
--------------引用終わり---

「セルに直接値を入力しない」ということは理解できましたが、「コンボボックス」がどのコンボボックスを指しているのかがいまいち特定できませんでしたが、以下に情報を記載します。

・セルA1に入力規則のリストによるコンボもどきをご使用の場合
  #1で記載した方法で問題ありません。

・コントロールボックスツールボックスのコンボボックスをご使用の場合
  コンボボックスを操作するとA1に選択した値が入力される(マクロ使用)のであれば、#1で記載した方法で問題ありません。

#1で提示した方法はA1の値が何か、を条件にしていますので、基本的にA1の値が変わる方法ならどの場合でも問題ないはずです。
もう少し詳しく状況を教えてください。

この回答への補足

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

補足日時:2007/10/23 17:18
    • good
    • 0

ワークシート関数では実現できないと思いますので、マクロ(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」の画像が表示されるはずです。
ブックにマクロ実行の許可を設定しておいてください。

この回答への補足

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

補足日時:2007/10/23 15:25
    • good
    • 0

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

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


このQ&Aを見た人がよく見るQ&A