您好,我不断遇到相同的错误。 Worksheets(4).Cells(Row_Pos,8)引用具有True或False值的行。我也尝试使用1和0代替True或False,但仍然无法使用。
Sub AddNonStockIncomings()
Dim Row_Pos As Long
Dim ABJ_Val_Col As Integer
Dim JOS_Val_Col As Integer
Dim MIU_Val_Col As Integer
Dim YOL_Val_Col As Integer
Dim Tot_count_OT_OP As Integer
Dim Tot_count_INV As Integer
Item_Code_Col = 1 'OT OP Pivot
ABJ_Val_Col = 2 'OT OP Pivot
JOS_Val_Col = 3 'OT OP Pivot
MIU_Val_Col = 4 'OT OP Pivot
YOL_Val_Col = 5 'OT OP Pivot
Row_Pos = 3 'OT OP Pivot
I = 1
Tot_count_INV = Worksheets(3).Columns(1).SpecialCells(2).Count + 3
Tot_count_OT_OP = Worksheets(4).Columns(1).SpecialCells(2).Count
'MsgBox (Tot_count_INV)
'MsgBox (Tot_count_OT_OP)
Do While Row_Pos >= Tot_count
**If Worksheets(4).Cells(Row_Pos, 8).Value = True Then**
Worksheets(4).Cells(Row_Pos, Item_Code_Col).Copy Worksheets(5).Cells(Tot_count_OT_OP, 1)
End If
Row_Pos = Row_Pos + 1
Loop
'Add the reset of values
End Sub
答案 0 :(得分:3)
强制执行布尔结果。
If cbool(Worksheets(4).Cells(Row_Pos, 8).Value) Then
出于所有意图和目的,布尔False为零。根据严格的定义,任何不为False的都是True。在进行数学或数字比较时,False在工作表或VBA中为零(0),而True在工作表中为一(1),在VBA中为一(-1)。
您不需要将布尔值与True或False进行比较。这就像询问If True = True then it is True
。您可以直接直接使用条件;例如If Worksheets(4).Cells(Row_Pos, 8).Value Then
。
您不应直接使用正整数或负整数作为True / False布尔值。将每个包装在CBool转换包装中。当使用And运算符堆叠条件时,这尤其重要。 VBA的And运算符是按位的,因此,当(2和3)为True时,(2和4)为False。