Excel VBAを使って、シート上のセルの値に基づいて画像を切り替える処理を作成する方法について解説します。質問者の要望は、シート「Sheet1」のセル「A1」の代わりに、別シート「Sheet2」のセル「B1」に入力された値を参照して画像を切り替える方法です。
問題の背景
質問者は、シート「Sheet1」のセル「A1」に「必要」または「不要」を入力することで画像を切り替えるVBAコードを作成していましたが、この動作を「Sheet2」のセル「B1」に変更したいと考えています。具体的なコードは次のようになっています。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(False, False) <> "A1" Then Exit Sub
Shapes("図 1").Visible = (Target.Value = "不要")
Shapes("図 2").Visible = (Target.Value = "必要")
End Sub
解決方法
このコードを別のシート(「Sheet2」の「B1」)を参照するように変更するには、VBAコード内で参照するシートを「Sheet2」に変更する必要があります。下記のコードでシート「Sheet2」のセル「B1」を参照し、値が「必要」または「不要」に基づいて画像を切り替えるようにします。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(False, False) <> "B1" Then Exit Sub
If Sheets("Sheet2").Range("B1").Value = "不要" Then
Shapes("図 1").Visible = True
Shapes("図 2").Visible = False
ElseIf Sheets("Sheet2").Range("B1").Value = "必要" Then
Shapes("図 1").Visible = False
Shapes("図 2").Visible = True
End If
End Sub
コードの詳細解説
コードの変更点について解説します。
- Sheets(“Sheet2”).Range(“B1”).Value: ここで「Sheet2」のセル「B1」の値を参照しています。これにより、「Sheet1」ではなく、別シートのセルを使って画像を切り替えることができます。
- If ~ ElseIf ~ End If: 「B1」のセル値が「不要」の場合は「図 1」を表示し、「図 2」を非表示にし、「B1」のセル値が「必要」の場合はその逆の処理を行います。
応用:他のセルを参照する
複数のセルを参照して画像を切り替える場合、同様のロジックを使って複数のセルをチェックすることができます。例えば、以下のコードで「Sheet2」のセル「B1」および「B2」を参照することも可能です。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(False, False) <> "B1" And Target.Address(False, False) <> "B2" Then Exit Sub
If Sheets("Sheet2").Range("B1").Value = "不要" Then
Shapes("図 1").Visible = True
Shapes("図 2").Visible = False
ElseIf Sheets("Sheet2").Range("B2").Value = "必要" Then
Shapes("図 1").Visible = False
Shapes("図 2").Visible = True
End If
End Sub
このコードでは、「B1」または「B2」のセルが変更された場合に応じて画像の表示を切り替えることができます。
まとめ
Excel VBAを使用して、別シートのセルの値に基づいて画像を切り替える方法について説明しました。シート名を指定することで、任意のシートにあるセルを参照し、その値に基づいて画像を制御することができます。ぜひ、この方法を試して、あなたのVBAスクリプトをカスタマイズしてみてください。


コメント