gpt4 book ai didi

Excel VBA结束选择没有选择案例

转载 作者:行者123 更新时间:2023-12-04 21:27:35 25 4
gpt4 key购买 nike

我正在制作一个程序来从电子表格中获取有关产品的数据,收集他们的信息,并计算是否需要订购更多产品。我一直试图让 Select Case 语句正常工作,无论我如何编码,我都会遇到同样的错误。我已经在 while 循环、for 循环和自身中完成了它。错误仍然存​​在“End Select without Select Case”,如您所见,这是不正确的。

  Sub Ordering()
Dim VendorName, Product As String
Dim Counter, ProductOffset, OnHand, OnHandOffset, OnOrder, OnOrderOffset, Commited, CommitedOffset As Integer

ProductOffset = 14 'columns out from A
OnHandOffset = 19
OnOrderOffset = 20
CommitedOffset = 21
Counter = 0

'start active cell in top left
Range("A1").Select

'grab product code
Product = ActiveCell.Offset(0, ProductOffset).Value
OnHand = ActiveCell.Offset(0, OnHandOffset).Value
OnOrder = ActiveCell.Offset(0, OnOrderOffset).Value
Commited = ActiveCell.Offset(0, CommitedOffset).Value

Select Case Product
Case "100HB"
If (OnHand + OnOrder - Commited) <= 1000 Then
MsgBox ("Found 100HB")

End Select
End Sub

最佳答案

编译器从顶部向下运行。当它遇到“block start”时,它不会跳到底部去尝试找到对应的“block end”。相反,它堆叠“ block 开始”标记,当它遇到“ block 结束”标记时,它会弹出该堆栈并与它所期望的进行比较:如果它期待 End If而是找到 End Select ,会引发编译(语法)错误:

  • 输入Select Case堵塞。预期的结束 block :End Select
  • 输入If在第一种情况下阻止。预期的结束 block :End If
  • 遇到End Select , 预计 End If => 抛出“end select without select case”语法错误

  • 很高兴知道 If VBA 中的语句有两种合法语法:
  • block 语法
    那是 If {bool-expression} Then ,紧接着是一个新行。要合法,需要有 End If token 进一步向下,以关闭该 block 。如果您在输入 Then 后总是按 ENTER 键,然后立即输入 End If并在中间插入和缩进一行代码,您将永远不会再遇到此语法/编译错误。
  • 内联语法
    那是 If {bool-expression} Then {expression} ,这就是 this comment建议这样做...通过引入行继续标记 {SPACE}_{NEWLINE}拥有{expression}部分放在单独的行上...如果您不小心,这会使它读起来/看起来像 block 语法。这也使得以后添加更多条件表达式变得比必要更困难,因为您必须添加 End If token 。
  • 关于Excel VBA结束选择没有选择案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66992552/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com