
Excelで2つのドロップダウンリストをリンクしたいのですが、解決策を探すといつもカスケードドロップダウン リスト。必要なのは、同じオプションを持つ 2 つのドロップダウン リストです。一方を変更すると、もう一方も変更されます。
単純に相互参照を試してみましたが、もちろん循環参照エラーが発生します。たくさんあるので、できれば VBA を使わずにこれをやりたいのですが、それが不可能な場合は理解します。
答え1
両方のセルを編集可能にしたい場合、説明していることは VBA なしでは実行できません。
ご存知のとおり、これらの数式を相互に参照すると循環参照が発生します。たとえそれが機能したとしても、ドロップダウンから値を選択するとすぐに、すべての数式が上書きされます。
したがって、VBA が唯一の選択肢となります。セルが 2 つの異なるシートにある場合、コードは次のようになります。
Sheet1 のシート モジュールで:
Private Sub Worksheet_Change(ByVal Target As Range)
' monitor cell A1
If Not Intersect(Target, Range("A1")) Is Nothing Then
Application.EnableEvents = False 'prevent endless loop of events
' copy selected value to Sheet2, cell b1
ThisWorkbook.Worksheets("Sheet2").Range("B1") = Range("A1")
Application.EnableEvents = True
End If
End Sub
Sheet2のシートモジュール
Private Sub Worksheet_Change(ByVal Target As Range)
' monitor cell B1 on sheet 2
If Not Intersect(Target, Range("B1")) Is Nothing Then
Application.EnableEvents = False 'prevent endless loop of events
' copy selected value to Sheet1, cell A1
ThisWorkbook.Worksheets("Sheet1").Range("A1") = Range("B1")
Application.EnableEvents = True
End If
End Sub
答え2
Teylyn が述べたように、希望どおりに動作させることは不可能です。
VBA 以外の別の回避策は、データ検証のドロップダウン リストの代わりにフォーム コントロールのドロップダウン リストを使用することです。
- 開発タブに移動します(表示されない場合は指示に従って有効にします)ここ) - 挿入 - フォーム コントロール - 「コンボ ボックス (フォーム コントロール)」
- 挿入してセルを覆うようにサイズを変更します
- 右クリックして「コントロール」を選択します
- 「入力範囲」と「セルリンク」を入力します
- それをコピーして別の場所に貼り付けます。両方とも同じセル リンクを持つため、どちらかを変更すると、もう一方も更新されます。