Vba 使用If语句,生成runtime-13类型不匹配错误 对于I=1到rCell.Offset(0,23).Value,我在第行得到了一个runtime-13类型不匹配。 当它出错时,我单击“结束”,它工作正常。不希望必须单击“结束” 在我的表单中,我使用If语句=If(E4>0,1,“”)生成所需的1。如果我删除If语句并手动将1放在适当的位置,那么它可以正常工作

Vba 使用If语句,生成runtime-13类型不匹配错误 对于I=1到rCell.Offset(0,23).Value,我在第行得到了一个runtime-13类型不匹配。 当它出错时,我单击“结束”,它工作正常。不希望必须单击“结束” 在我的表单中,我使用If语句=If(E4>0,1,“”)生成所需的1。如果我删除If语句并手动将1放在适当的位置,那么它可以正常工作,vba,excel,runtime-error,type-mismatch,Vba,Excel,Runtime Error,Type Mismatch,发生此错误是因为FOR循环中的结束范围不是LONG类型 如果我读对了你的第二个要点,我认为你的If陈述是错误的。IF的错误标准应为数字,而不是=IF(E4>0,1,“”),例如=IF(E4>0,1,2) 您可以通过将以下语句置于问题FOR循环上方进行验证: Private Sub CommandButton1_Click() ''Dim rCell As Range Dim i As Long Dim rNext As Range 'loop through the cells in colu

发生此错误是因为FOR循环中的结束范围不是LONG类型

如果我读对了你的第二个要点,我认为你的If陈述是错误的。IF的错误标准应为数字,而不是=IF(E4>0,1,“”),例如=IF(E4>0,1,2

您可以通过将以下语句置于问题FOR循环上方进行验证:

Private Sub CommandButton1_Click() ''Dim rCell As Range
Dim i As Long
Dim rNext As Range

'loop through the cells in column A of the source sheet
For Each rCell In Sheet4.Range("A3:U25")
'loop as many times as the value in column U of the source sheet
    For i = 1 To rCell.Offset(0, 23).Value
        'find the next empty cell to write to in the dest sheet
        Set rNext = Sheet12.Cells(Sheet12.Rows.Count, 1).End(xlUp).Offset(1, 0)
        'copy A and B from source to the dest sheet
        rCell.Resize(1, 23).Copy
        rNext.Resize(1, 1).PasteSpecial (xlPasteValues)
    Next i
Next rCell
End Sub
这将停止代码执行,您可以将其放入立即窗口,以查看值是什么以及所涉单元格的位置:

Debug.Assert IsNumeric(rCell.Offset(0, 23).Value)

好的,我解决了这个问题:

=IF(E4>0,1,”)
需要是
=IF(E4>0,1,0)

无法查找空白,必须是1或0。或如您所说的数值。
很简单。谢谢你的帮助。我甚至都没看到。

你能简单描述一下你要实现的目标吗,这样你的代码就更容易放在上下文中了?
? rCell.Offset(0, 23).Value
? rCell.Offset(0, 23).Column
? rCell.Offset(0, 23).Row