隣接するセルにラベルが付いたラジオ ボタンのグループがあります。ターゲット セルの値と一致するラベルが付いたラジオ ボタンをアクティブにするにはどうすればよいでしょうか。
私が達成しようとしていることと同等の例を次に示します。
ここでは、「購入者」と「送信先」という 2 つのラジオ グループがあります。ラベルは列 A に、ラジオ グループは列 B に、ターゲット値は列 C にあります。列 C の値は私たちが制御するもので、列 A のラベルのリストでターゲット セルの値を検索して、正しいラジオ ボタンをアクティブ化します。つまり、C2 が「内部」に変更された場合、セル B4 のラジオ ボタンをアクティブ化します。B7 と B8 のラジオ ボタンは別のグループにあるため、影響を受けません。
答え1
ラベルの値を実際に読み取る必要はありません。オプション ボタンにラベルを割り当て、その方法で選択したオプションの値を変更できます。
Worksheet_SelectionChangeでこれを呼び出すことができます
Sub reflectCell()
Dim targetedCell As String
targetedCell = Range("A1").Text
Select Case UCase(targetedCell)
Case "RED"
ActiveSheet.OptionButton1.Value = True
Case "BLUE"
ActiveSheet.OptionButton2.Value = True
Case "GREEN"
ActiveSheet.OptionButton3.Value = True
End Select
終了サブ
ラベルが OptionButton に隣接するセル値であることを意味していない限り、ターゲット セルは静的な範囲の場所ですか、それとも現在の ActiveCell ですか?
ターゲット セルが常に同じ場所にある場合は、次のように入力スペルを制御できます。
もう一つのよりシンプルなアプローチは
シート上で数式を使用できる場合に機能する非マクロソリューションは、このスクリーンキャプチャに示されています。
各オプション ボタンに列 A のラベルと同じ名前を付けます。リンクされたセルを別のセルにします (非表示にすることもできます。例 E は F に表示されている数式です)。そのセルで、各セル ラベルに入力した値を比較します。TRUE になるのは 1 つだけです (数式の例を参照)。
したがって、B2のオプションはE2にリンクされ、B3はE3にリンクされ、B7はE7にリンクされます。数式を含む追加の列が許可されている場合(どこにでも配置できます)、これはvbaを使用するよりもはるかに簡単です。