当参数变量达到某个值时出现错误1004

时间:2016-10-31 06:58:37

标签: 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 = Worksheets("Onorder").Cells(ordercount, 1).Value由编译器突出显示。

但是当我限制变量ordercount的值时,代码执行(ordercount为Long,将其声明为Integer给出溢出错误)。 以下代码有效:

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

1 个答案:

答案 0 :(得分:0)

变化

            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

            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

并摆脱ordercount