dポイントプレゼントキャンペーン実施中!

セルに入力規則を設定して、「A,B,C」を選べるとします。
Aを選んだとき、Bを選んだとき、Cを選んだときの処理をVBAで記述しているのですが、
「A,B,C」の値はは変わることがあるので、入力規則の一番目を選んだとき、二番目を選んだとき、三番目を選んだときのように出来ないでしょうか?
VBのコンボボックスのように使いたいです。

A 回答 (2件)

入力規則リストの元の値が、セル範囲や名前で指定されている前提でしたら、次のようなワークシートモジュールではいかがでしょうか。

(Targetの判定は省略しています)

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim DT As Variant, i As Long
  Set DT = Evaluate(Target.Validation.Formula1)
  Do
    i = i + 1
    If Target.Value = DT(i) Then
      MsgBox i '※
      Exit Sub
    End If
  Loop
End Sub

ここでは、※の行で上から何番目のデータかを表示します。
この行の代わりに、Select Case ステートメントで、i の値別に処理を分岐されたらいかがでしょうか。
    • good
    • 0

Changeイベントを使用する場合、以下のようにしてみてください。




Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Integer, A As Variant
If Not Intersect(Target, Range("A1")) Is Nothing Then
A = Split(Target.Validation.Formula1, ",")
For I = 0 To UBound(A) - 1
If Target.Value = A(I) Then
Exit For
End If
Next I
End If
Select Case I
Case 1
'1番目の時の処理
Case 2
'2番目の時の処理
Case 3
'3番目の時の処理
End Select
End Sub
    • good
    • 0

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