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