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
For i = 1 To rCell.Offset(0, 23).Value
行遇到了运行时-13类型不匹配。
当它出错时,我点击结束,它工作正常。不想点击结束。=IF(E4>0,1,"")
来生成所需的1。如果我删除If语句并手动将1放在适当的位置,那么它可以正常工作。答案 0 :(得分:2)
发生错误是因为FOR LOOP中的结束范围不是LONG的类型。
如果我正确读取您的第二个要点,我认为您的IF声明已关闭。而不是= IF(E4> 0,1,“”),IF的FALSE标准应该是数字的(例如= IF(E4> 0,1, 2 )。
您可以通过将以下语句置于问题FOR LOOP上来进行验证:
Debug.Assert IsNumeric(rCell.Offset(0, 23).Value)
这将停止执行代码,您可以将其放在即时窗口中,以查看值是什么以及相关单元格的位置:
? rCell.Offset(0, 23).Value
? rCell.Offset(0, 23).Column
? rCell.Offset(0, 23).Row
答案 1 :(得分:0)
好的,我解决了问题:
=IF(E4>0,1,"")
必须为=IF(E4>0,1,0)
无法查找空白,必须是1或0.或数字值,如您所说。 很简单。谢谢您的帮助。甚至都没看到。