質問

I am new to VBA and would like to use a case statement with a reference to different cell values (in the same file).

Currently I have this working using the below If statements. Can someone tell me how I could use Case here instead so that I it doesn't always have to check all the single If statements ?

My code so far:

'case 1
If Me.selCategory = Worksheets("Admin").Range("B2") Then
    Me.txtRestNote = Worksheets("Admin").Range("F2")
    Me.txtCustEmail = Worksheets("Admin").Range("A26")
End If
'case 2
If Me.selCategory = Worksheets("Admin").Range("B3") Then
    Me.txtRestNote = Worksheets("Admin").Range("F3")
    Me.txtCustEmail = Worksheets("Admin").Range("A27")
End If
'case 3
If Me.selCategory = Worksheets("Admin").Range("B4") Then
    Me.txtRestNote = Worksheets("Admin").Range("F4")
    Me.txtCustEmail = Worksheets("Admin").Range("A28")
End If
'case 4
If Me.selCategory = Worksheets("Admin").Range("C2") Then
    Me.txtRestNote = Worksheets("Admin").Range("G2")
    Me.txtCustEmail = Worksheets("Admin").Range("A29")
End If
'case 5
If Me.selCategory = Worksheets("Admin").Range("C3") Then
    Me.txtRestNote = Worksheets("Admin").Range("G3")
    Me.txtCustEmail = Worksheets("Admin").Range("A30")
End If

Many thanks in advance for any help with this, Tim.

役に立ちましたか?

解決

Try this one:

With Worksheets("Admin")
    Select Case Me.selCategory
        Case .Range("B2")
            Me.txtRestNote = .Range("F2")
            Me.txtCustEmail = .Range("A26")
        Case .Range("B3")
            Me.txtRestNote = .Range("F3")
            Me.txtCustEmail = .Range("A27")
        Case .Range("B4")
            Me.txtRestNote = .Range("F4")
            Me.txtCustEmail = .Range("A28")
        Case .Range("C2")
            Me.txtRestNote = .Range("G2")
            Me.txtCustEmail = .Range("A29")
        Case .Range("C3")
            Me.txtRestNote = .Range("G3")
            Me.txtCustEmail = .Range("A30")
    End Select
End With
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top