选择案例编译错误之外的案例

Posted

技术标签:

【中文标题】选择案例编译错误之外的案例【英文标题】:Case outside Select Case Compile Error 【发布时间】:2017-12-15 00:34:17 【问题描述】:

我是编码新手,正在寻求帮助。我这里有一个代码给我“选择案例之外的案例”错误,但我的案例在“选择案例”和“结束选择”之内,所以我不确定我做错了什么。

Sub codematch()

Dim wbk As Workbook
Select Case response = MsgBox("Is the cursor in the first cell of the column?", vbYesNo, "Code Finder")
Case condition1
    If response = 6 Then
        Set wbk = Workbooks.Open("C:\test.xlsm")
        Call wbk
        ActiveCell.Offset(0, 1).Select
        ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'[test.xlsm]Sheet1'!C1:C2,2,0)"
        Do Until ActiveCell = ""
        Call wbk.Close(False)
Case condition2
   If response = 7 Then
    response = MsgBox("Position the Cursor in the correct location and try again", vbOKOnly)
   End If
End Select
End Sub

【问题讨论】:

Case condition2 之前缺少End If 即使您修复了IfSelect Case 也无法正常工作。 (好吧,它可能“有效”,但我怀疑它是否会按照您的想法进行。)变量response (0?) 将与您的MsgBox 的结果进行比较。如果responseMsgBox 匹配,那么如果condition1 计算结果为True,它将执行第一种情况,或者如果condition1False 并且condition2True,它将执行第二种情况。如果responseMsgBox 不同,那么如果condition1 计算结果为False,它将执行第一种情况,或者如果condition1Truecondition2False,则执行第二种情况. 你需要学习select case语句的用法。 ...它的工作方式与您想象的不同........如果您知道它的作用,您将不会在 case 语句中包含 if 语句 【参考方案1】:

坦率地说,你的大部分代码都是毫无意义的。谁在乎用户的光标在哪里。

Sub codematch()
dim target as range
set target = range("B1") 'or whever you want to start
Dim wbk As Workbook
Set wbk = Workbooks.Open("C:\test.xlsm")
Target.FormulaR1C1 = "=VLOOKUP(RC[-1],'[test.xlsm]Sheet1'!C1:C2,2,0)"

do 
   set target = target.offset(1,0)
   target.offset(-1,0).copy target
loop until target.offset(0,-1)=""
target.clear
target.parent.columns(target.column).cells.formula = 
_target.parent.columns(target.column).cells.value 'convert to values
wbk.close false
end sub

我认为你正在尝试做的事情

【讨论】:

以上是关于选择案例编译错误之外的案例的主要内容,如果未能解决你的问题,请参考以下文章

具有多个 WITH AS 案例的 DB2 查询未编译

Excel 选择案例类型不匹配错误

选择案例的运行时错误 9

在第一个错误条件下选择案例停止

在编译时验证 Scala 案例类

选择案例中的比较结构