gpt4 book ai didi

vba - 无法修复类型不匹配错误

转载 作者:行者123 更新时间:2023-12-03 08:54:29 24 4
gpt4 key购买 nike

我的if语句中出现这种非常烦人的类型不匹配错误,我似乎无法修复。有人的帮助将不胜感激。

    lrIPA = Sheets("IPA").Range("A65000").End(xlUp).Row
A = 2
Do
'this is where my error is happening!****
If Worksheets("IPA").Cells(A, 4).Value - Worksheets("Master Sheet").Range("I8").Value > Worksheets("Master Sheet").Range("I6").Value Then
B = 3
SL = False
Do
If Cells(B, 2).Value = Sheets("IPA").Cells(A, 2).Value Then
If Sheets("IPA").Cells(A, 5).Value = "" Then
Cells(B, 5).Value = Application.WorksheetFunction.RoundDown(Sheets("IPA").Cells(A, 4).Value - Sheets("Master Sheet").Range("I8"), -5)
'this just stores the unrounded CAD values
Cells(B, 100).Value = Sheets("IPA").Cells(A, 4).Value - Sheets("Master Sheet").Range("I8")
ElseIf Sheets("IPA").Cells(A, 5).Value = "USD" Then
Cells(B, 6).Value = Application.WorksheetFunction.RoundDown(Sheets("IPA").Cells(A, 4).Value - Sheets("Master Sheet").Range("I8"), -5)
End If
SL = True
End If
B = B + 1
Loop Until SL = True Or B > lrIA
End If
A = A + 1
Loop Until A > lrIPA

最佳答案

尝试通过根据大小将单元格显式转换为整数或整型来确保VBA将单元格的内容识别为数字。为此,将使用:

If cint(Worksheets("IPA").Cells("A", 4).Value) - cint(Worksheets("Master Sheet").Range("I8").Value) > cint(Worksheets("Master Sheet").Range("I6").Value) Then

对于更长的数字,请将cint替换为clng。如果它们是浮点,请使用CDbl等。

您还应该使用 cells("A", 4),除非A是您在其他地方指定为字符串的变量。

编辑:

好的,所以我以一种非常简单的方式进行了尝试。我分解了很长的条件语句,它起作用了:
Sub tst()


Dim d2 As Currency, i8 As Currency, i6 As Currency

d2 = CCur(ThisWorkbook.Sheets("IPA").Cells(2, 4).Value)
i8 = CCur(Worksheets("Master Sheet").Range("I8").Value)
i6 = CCur(Worksheets("Master Sheet").Range("I6").Value)
If d2 - i8 > i6 Then
Debug.Print "true"
End If

End Sub

CInt也可以用于具有货币类型的单元格,但要注意溢出。

关于vba - 无法修复类型不匹配错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31211587/

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