我尝试显示一个来自下拉列表的消息,实际上我只有40个下拉列表,我只为28个下拉列表创建了一个消息,而对于最后12个下拉列表,我收到了一条错误消息(过程太大)

我在所有情况下都使用了此功能

If Target.Address(0, 0) = "K3" Then
    Select Case Target
        Case "EX1": Sheets("By Assessment method").Range("K2") = Sheets("SOMC-Legend").Range("B9")
        Case "EX2": Sheets("By Assessment method").Range("K2") = Sheets("SOMC-Legend").Range("B10")
        Case "EX3": Sheets("By Assessment method").Range("K2") = Sheets("SOMC-Legend").Range("B11")
        Case "Educ":  Sheets("By Assessment method").Range("K2") = Sheets("SOMC-Legend").Range("B7")   End Select
End if

最佳答案

您的代码比应有的更加冗长,有多种解决方法,例如:

Dim rng as string

If Target.Address(False, False) = "K3" Then
    Select Case Target
        Case "EX1":   rng= "B9"
        Case "EX2":   rng= "B10"
        Case "EX3":   rng= "B11"
        Case "Educ":  rng= "B7"
     End Select
End If

If rng<>"" Then
     Sheets("By Assessment method").Range("K2") = _
                Sheets("SOMC-Legend").Range(rng).Value
End If

如果不查看更多现有方法,就很难提出可能更有用的方法。

每当您在VBA中遇到“过程过大”时,就暗示您可能需要重新考虑您的工作方式。

关于vba - 程序太大,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32531514/

10-10 16:30