- ベストアンサー
条件に一致したときに画像を表示したいのですが・・。
お世話になっております。 Excelでセルの値に一致したときに指定した画像を表示したいのです。 具体的に申しますと、 仮にA1が1のときに「a」という画像を表示し、 A1が2のときに「b」という画像を表示したいのです。 そのときの画像は、一定の場所で表示できるようにしたいのです。 イメージとしては、 IF関数を用いたときに、条件に一致したときに文字列や値を表示 するような感じです。 どんな方法でもかまいませんのでよろしくお願いいたします。
- みんなの回答 (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 '←
その他の回答 (6)
- bonaron
- ベストアンサー率64% (482/745)
#3です。 > これはどこに記載するのでしょうか? コンボボックスを右クリックして「マクロの登録」をクリック。 マクロ名のところに「ドロップ1_Change」とか表示されていますね。 マクロの保存先を「作業中のブック」にして「新規作成」をクリック。 Sub ドロップ1_Change() ' ここでカーソルが点滅 End Sub となりますので カーソル位置に貼り付けます。 Worksheet_Changeイベントの If ~ End If までですよ。念のため。
補足
ありがとうございます。 同一シート上にコンボボックスを作成した場合にはうまく表示することができました。 しかしながら、別シートにコンボボックスを作成したところ画像は表示できなくなってしまいました。(コンボボックスを変更したとき) LinkedCellに直接値を入力した場合には画像は表示されます。 この場合はどうしたらよろしいのでしょうか? よろしくお願いいたします。
- marbin
- ベストアンサー率27% (636/2290)
VBAを使わない方法です。 http://www.geocities.jp/chiquilin_site/data/050530_search.html http://www.officetanaka.net/excel/function/tips/tips14.htm ちょいと面倒かも。
お礼
回答ありがとうございます。 http://www.officetanaka.net/excel/function/tips/tips14.htm はイメージとぴったりです!! ですが、せっかくVBAでがんばっていますのでもう少しこちらでがんばって見ます。 それでも、とてもよい勉強になりました!!
- Terry_Azai
- ベストアンサー率33% (1/3)
フォームのコンボボックスについて言及していませんでしたね。 すでにお答えが出ているようですので、それを実行して見てください。
- bonaron
- ベストアンサー率64% (482/745)
> コンボボックスを用いてセルに値を入力した場合、 > 画像が表示されません。 コンボボックスの 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 イベントのコードを貼り付ければ動くと思います。 これはどこに記載するのでしょうか? 初心者で申し訳ありませんがよろしくお願いいたします。
- Terry_Azai
- ベストアンサー率33% (1/3)
#1です。 ---引用-------------------- そこで、追加なのですが、セルに値を入力するのではなく、 コンボボックスを用いてセルに値を入力した場合、 --------------引用終わり--- 「セルに直接値を入力しない」ということは理解できましたが、「コンボボックス」がどのコンボボックスを指しているのかがいまいち特定できませんでしたが、以下に情報を記載します。 ・セルA1に入力規則のリストによるコンボもどきをご使用の場合 #1で記載した方法で問題ありません。 ・コントロールボックスツールボックスのコンボボックスをご使用の場合 コンボボックスを操作するとA1に選択した値が入力される(マクロ使用)のであれば、#1で記載した方法で問題ありません。 #1で提示した方法はA1の値が何か、を条件にしていますので、基本的にA1の値が変わる方法ならどの場合でも問題ないはずです。 もう少し詳しく状況を教えてください。
補足
何度も申し訳有りません。 コンボボックスは、フォームの中にあるコンボボックスを使用しており、コントロールの書式設定のコントロールでリンクするセルをセルA1に設定しています。 で、フォームのコンボボックスは別のシートに作成したいと思っております。 とりあえず、同じシート内に上記コンボボックスを作成し、セルA1に値が入力されるように試したのですが、画像が変更されないといった状況です。 申し訳有りませんがよろしくお願いいたします。
- Terry_Azai
- ベストアンサー率33% (1/3)
ワークシート関数では実現できないと思いますので、マクロ(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で画像の非表示は可能になりました。 そこで、追加なのですが、セルに値を入力するのではなく、 コンボボックスを用いてセルに値を入力した場合、 画像が表示されません。 この場合にはどのようにしたらよろしいのでしょうか? よろしくお願いいたします。
お礼
お礼が遅くなってしまい申し訳ありません!! おかげさまで無事作成することができました!! 本当にありがとうございます。 今後ともよろしくお願いいたします。