excel VBA小于单元格的运算符,值不能正确工作[已关闭]

zwghvu4y  于 2023-02-20  发布在  其他
关注(0)|答案(1)|浏览(115)

**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
昨天关门了。
Improve this question
我尝试在excel VBA中使用通常的less运算符给予一个值。因此,每当一个单元格中的值小于8且大于0时,我都会给出值18。否则,将打印出“Empty”。这仅适用于某些列不为空的特定行。以下是我的代码片段:

ActiveWorkbook.Sheets(1).Columns(22).NumberFormat = "0.00"
ActiveWorkbook.Sheets(1).Columns(23).NumberFormat = "0.00"

For x = 2 To LastRow
    If Not IsEmpty(Cells(x, "E")) And Not IsEmpty(Cells(x, "F")) And Not IsEmpty(Cells(x, "G")) And Not IsEmpty(Cells(x, "H")) And Not IsEmpty(Cells(x, "I")) And Not IsEmpty(Cells(x, "J")) Then
        If Cells(x, "V").Value <= "8" And Cells(x, "V").Value > "0" Then
        Cells(x, "AA").Value = "18"
        Else: Cells(x, "AA").Value = "Empty"
        End If
    End If

Next x

该代码只适用于值为9的单元格,除此之外,它总是给出18,即使这个数字比8大得多。
我也检查了调试器,它说值/双精度作为类型和正确的值的单元格。但无论如何,宏输入18。

zbdgwd5y

zbdgwd5y1#

您在比较语句和赋值语句中使用字符串值(“8”、“0”、“18”、“Empty”)而不是数值。由于字符串比较与数值比较不同,这将导致意外结果。
尝试使用数值而不是字符串。此外,您可以使用“And”运算符来合并单元格空检查,并使用ElseIf语句来避免不必要的比较,从而简化代码。以下是更新的代码片段:

ActiveWorkbook.Sheets(1).Columns(22).NumberFormat = "0.00"
ActiveWorkbook.Sheets(1).Columns(23).NumberFormat = "0.00"

For x = 2 To LastRow
    If Not IsEmpty(Cells(x, "E")) And Not IsEmpty(Cells(x, "F")) And Not IsEmpty(Cells(x, "G")) And Not IsEmpty(Cells(x, "H")) And Not IsEmpty(Cells(x, "I")) And Not IsEmpty(Cells(x, "J")) Then
        If Cells(x, "V").Value > 0 And Cells(x, "V").Value < 8 Then
            Cells(x, "AA").Value = 18
        ElseIf Cells(x, "V").Value >= 8 Then
            Cells(x, "AA").Value = "Empty"
        End If
    End If
Next x

相关问题