Vba 参数变量达到某个值时出现错误1004
我收到以下代码的错误:Vba 参数变量达到某个值时出现错误1004,vba,excel,Vba,Excel,我收到以下代码的错误: For Each Cell1 In Orderrange If Worksheets("Resolve Orders").Range("A" & sourcecount) = Cell1.Value Then dat = Worksheets("Onorder").Cells(ordercount, 1).Value End If ordercount = ordercount + 1 Next Cell1 dat=Wor
For Each Cell1 In Orderrange
If Worksheets("Resolve Orders").Range("A" & sourcecount) = Cell1.Value Then
dat = Worksheets("Onorder").Cells(ordercount, 1).Value
End If
ordercount = ordercount + 1
Next Cell1
dat=Worksheets(“Onorder”)。单元格(ordercount,1)。值由编译器突出显示
但是,当我限制变量ordercount的值时,代码会执行(ordercount很长,将其声明为整数会产生溢出错误)。
以下代码起作用:
For Each Cell1 In Orderrange
If Worksheets("Resolve Orders").Range("A" & sourcecount) = Cell1.Value Then
If ordercount > 1000 Then
ordercount = 1000
End If
dat = Worksheets("Onorder").Cells(ordercount, 1).Value
End If
ordercount = ordercount + 1
Next Cell1
以下是完整的代码:
Sub Resolve_Onorder()
'Import source range------------------------------
Dim LastRow1 As Long
LastRow1 = Worksheets("Stock Summary").Range("A2").End(xlDown).Row
Dim Sourcerange As Range
Set Sourcerange = Worksheets("Stock Summary").Range("A2:A" & LastRow1)
'-------------------------------------------------
'Export source range to worksheet-----------------
Dim C1 As Long
C1 = 2
For Each Cell In Sourcerange
Worksheets("Resolve Orders").Range("A" & C1) = Cell.Value
C1 = C1 + 1
Next Cell
'-------------------------------------------------
'Import week number-------------------------------
Dim Wknum As Integer
Dim Wknum1 As Integer
Dim Wknum2 As Integer
Dim Wknum3 As Integer
Dim Wknum4 As Integer
Wknum = Worksheets("MPS").Range("C2").Value
Wknum1 = Wknum + 1
Wknum2 = Wknum + 2
Wknum3 = Wknum + 3
Wknum4 = Wknum + 4
'-------------------------------------------------
'Import Onorder range------------------------------
Dim LastRow2 As Long
LastRow2 = Worksheets("Onorder").Range("C2").End(xlDown).Row
Dim Orderrange As Range
Set Orderrange = Worksheets("Onorder").Range("C2:C" & LastRow2)
'-------------------------------------------------
'-------------------------------------------------
Dim sourcecount As Long
Dim ordercount As Long
Dim ordercoldate As Long
Dim ordercolqty As Long
Dim ordercolrec As Long
Dim dat As String
Dim qty As String
Dim req As String
Dim tdat As String
Dim Colstr As String
Colstr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
sourcecount = 2
ordercount = 2
ordercoldate = 2
ordercoldate = 2
ordercolqty = 8
ordercolrec = 14
While sourcecount <= LastRow1
ordercoldate = 2
ordercolqty = 8
ordercolrec = 14
'''''''''''''''''''
Dim i As Long
i = 1
'''''''''''''''''''
For Each Cell1 In Orderrange
If Worksheets("Resolve Orders").Range("A" & sourcecount) = Cell1.Value Then
''''''''''''''''''''''''''''''''
Worksheets("VBAhide").Range("A" & i).Value = ordercount
i = i + 1
'''''''''''''''''''''''''''''''''
MsgBox "Reached"
Worksheets("Resolve Orders").Cells(sourcecount, ordercoldate).Value = Worksheets("Onorder").Cells(ordercount, 7).Value 'Worksheets("Onorder").Range("G" & ordercount).Value
Worksheets("Resolve Orders").Cells(sourcecount, ordercolqty).Value = Worksheets("Onorder").Cells(ordercount, 8).Value 'Worksheets("Onorder").Range("H" & ordercount).Value
Worksheets("Resolve Orders").Cells(sourcecount, ordercolrec).Value = Worksheets("Onorder").Cells(ordercount, 10).Value 'Worksheets("Onorder").Range("J" & ordercount).Value
MsgBox "Reached2"
ordercoldate = ordercoldate + 1
ordercolqty = ordercolqty + 1
ordercolrec = ordercolrec + 1
End If
ordercount = ordercount + 1
Next Cell1
sourcecount = sourcecount + 1
Wend
End Sub
Sub-Resolve\u-Onorder()
'导入源范围------------------------------
变暗最后一行1的长度
LastRow1=工作表(“库存汇总”).范围(“A2”).结束(xlDown).行
将源范围变暗为范围
设置Sourcerange=工作表(“库存汇总”).Range(“A2:A”和LastRow1)
'-------------------------------------------------
'将源范围导出到工作表-----------------
如长
C1=2
对于Sourcerange中的每个单元格
工作表(“解析订单”).Range(“A”和C1)=单元格.Value
C1=C1+1
下一个细胞
'-------------------------------------------------
'导入周数-------------------------------
Dim Wknum作为整数
作为整数的Dim Wknum1
Dim Wknum2作为整数
Dim Wknum3为整数
Dim Wknum4为整数
Wknum=工作表(“MPS”).范围(“C2”).值
Wknum1=Wknum+1
Wknum2=Wknum+2
Wknum3=Wknum+3
Wknum4=Wknum+4
'-------------------------------------------------
'导入订单范围------------------------------
暗淡的最后一行2一样长
LastRow2=工作表(“Onorder”).范围(“C2”).结束(xlDown).行
Dim Orderrange作为范围
设置Orderrange=工作表(“Onorder”).Range(“C2:C”和LastRow2)
'-------------------------------------------------
'-------------------------------------------------
将sourcecount设置为长
Dim ordercount尽可能长
Dim ordercoldate尽可能长
Dim ordercolqty尽可能长
Dim ordercolrec尽可能长
作为字符串的Dim dat
作为字符串的Dim数量
Dim req作为字符串
Dim tdat作为字符串
作为字符串的Dim Colstr
Colstr=“abcdefghijklmnopqrstuvxyz”
sourcecount=2
ordercount=2
ordercoldate=2
ordercoldate=2
订单数量=8
ordercolrec=14
而sourcecount
到
并摆脱订单数量的变化
Worksheets("Resolve Orders").Cells(sourcecount, ordercoldate).Value = Worksheets("Onorder").Cells(ordercount, 7).Value 'Worksheets("Onorder").Range("G" & ordercount).Value
Worksheets("Resolve Orders").Cells(sourcecount, ordercolqty).Value = Worksheets("Onorder").Cells(ordercount, 8).Value 'Worksheets("Onorder").Range("H" & ordercount).Value
Worksheets("Resolve Orders").Cells(sourcecount, ordercolrec).Value = Worksheets("Onorder").Cells(ordercount, 10).Value 'Worksheets("Onorder").Range("J" & ordercount).Value
到
并摆脱ordercount
如何声明dat
是字符串错误1004后面有什么描述?“应用程序定义的错误或对象定义的错误”。您的代码是否仅限于显示的内容?或者它是作用于工作表(“Onorder”)
?这段代码的目的是什么?如何声明dat
?dat是字符串错误1004后面有什么描述?“应用程序定义的错误或对象定义的错误”。您的代码是否仅限于显示的内容?或者它是作用于工作表(“Onorder”)
?这段代码的目的是什么?源单元格和目标单元格都位于不同的工作表上。我认为您的建议适用于在同一工作表中复制值。如果我错了,请更正。.Cells(sourcecount,ordercoldate).Value
,位于带有工作表(“解析订单”)
块的中,并带有尾随点,实际上指的是一个解析订单
范围,而Cell1
在orderange
中循环,该范围以前被定义为工作表的一个范围(“Onorder”)
。因此,它们指向不同的工作表。试着去看电影results@MaherJiwani,你通过了吗?我没有像Alex正确指出的那样重置ordercount,这似乎比你的建议更容易编辑。因为我才刚开始使用vba,所以我对一个可以工作的代码感到满意,并且没有为了更好的代码而进行太多更改的风险。非常感谢!下次我将使用您的方法复制值。我同意这是更容易编辑的方法。但它会给您留下一个脆弱的代码,因为您没有利用对您创建的对象的引用(在本例中,Cell1
和工作表(“解析订单”)
)。这迟早会导致调试问题。源单元格和目标单元格都位于不同的工作表上。我认为您的建议适用于在同一工作表中复制值。如果我错了,请更正。.Cells(sourcecount,ordercoldate).Value
,位于带有工作表(“解析订单”)
块的中,并带有尾随点,实际上指的是一个解析订单
范围,而Cell1
在orderange
中循环,该范围以前被定义为工作表的一个范围(“Onorder”)
。因此,它们指向不同的工作表。试着去看电影results@MaherJiwani,你通过了吗?我没有像Alex正确指出的那样重置ordercount,这似乎比你的建议更容易编辑。因为我才刚开始使用vba,所以我对一个可以工作的代码感到满意,并且没有为了更好的代码而进行太多更改的风险。非常感谢!下次我将使用您的方法复制值。我同意这是更容易编辑的方法。但它会给您留下一个脆弱的代码,因为您没有利用对您创建的对象的引用(在本例中,Cell1
和工作表(“解析订单”)
)。这迟早会导致调试问题。
With Worksheets("Resolve Orders")
.Cells(sourcecount, ordercoldate).Value = Cell1.Offset(, 4).Value 'Worksheets("Onorder").Range("G" & ordercount).Value
.Cells(sourcecount, ordercolqty).Value = Cell1.Offset(, 5).Value 'Worksheets("Onorder").Range("H" & ordercount).Value
.Cells(sourcecount, ordercolrec).Value = Cell1.Offset(, 7).Value 'Worksheets("Onorder").Range("J" & ordercount).Value
End With