VBAselect案例忽略单个数字(LEN)单元格
我有一个select案例,这意味着要查找和设置确切的案例。 令我困惑的是,它在具有2位数的情况下执行,而不是在单个数字单元格上执行。 显然,情况“B”和“C”在执行else语句,而不是他们各自的情况下,任何指针将不胜感激…
Public Function cartMaxCalc(i As Long) Dim contQty Set contQty = Cells(i, 6) Dim contTypeRange Set contTypeRange = Cells(i, 5) Dim cartMx As Long 'determine category by first digit of cell Select Case UCase(Left(Cells(i, 11).Value, 2)) Case "E" Select Case contTypeRange Case "B", "J3", "B0" ' "B" is not recognized cartMx = 4 * contQty Case "C", "C0", "J2", "B2" ' "C" is not recognized cartMx = 8 * contQty Case "C2", "J1", "j4" cartMx = 16 * contQty Case "D1" cartMx = 24 * contQty Case "XX", "ZZ" cartMx = 0 Case Else '"B" and "C" execute here cartMx = contQty End Select Case "G", "P" Select Case contTypeRange Case "B", "J3", "B0", "D1" 'do nothing Case "C", "C0", "J2" cartMx = 6 * contQty Case "C2", "J1" cartMx = 12 * contQty Case "XX", "ZZ" cartMx = 0 Case Else cartMx = contQty End Select Case "A", "A3", "B", "B", "C", "C3", "D", "D3", "D4" Select Case contTypeRange Case "C", "C0", "J2", "B2" cartMx = 2 * contQty Case "C2", "J1" cartMx = 4 * contQty Case "D1" cartMx = 6 * contQty Case Else cartMx = contQty End Select Case "T", "F", "R", "L" Select Case contTypeRange Case "B", "J3", "B0" cartMx = 2 * contQty Case "C", "C0", "J2", "B2" cartMx = 4 * contQty Case "C2", "J1" cartMx = 8 * contQty Case "D1" cartMx = 12 * contQty Case "XX", "ZZ" cartMx = 0 Case Else cartMx = contQty End Select Case Else cartMx = 1 * contQty End Select cartMaxCalc = cartMx End Function
尝试修改您的select:
Trim(UCase(Left(Cells(i, 11).Value, 2)))
和第二个select
Trim(contTypeRange)
看起来你可能有额外的空间。 如果这不起作用,然后检查contTypeRange
值的长度,看看是否有一些奇怪的字符…
Select Case UCase(Left(Cells(i, 11).Value, 2)) '// <~~ Get 2 characters from left Case "E" '// <~~ Only 1 character long - will never be equal Select Case contTypeRange '// <~~ this would never be reached
这是得到Cells(i, 11)
的前两个字符永远不会评估为"E"
所以我不相信,执行发生在嵌套的Select Case
语句内的任何地方
你确定“B”和“C”在else中被执行吗? 你可以写在其他地方吗?
debug.print contTypeRange debug.print len(contTypeRange)
只是为了看看它是什么回来?