簡體   English   中英

我該如何處理VBA Excel中的錯誤1004?

[英]how do I deal with error 1004 in vba excel?

基本上我有3個工作表。 從第一個工作表中獲得一個值(rotid),然后使用match函數嘗試在第二個工作表中找到該值,並將與該值關聯的行復制到工作表3中,其中y是工作表中該行的索引2對應於值(循環)。 但是有時在工作表2中找不到值,程序崩潰。 我該如何處理此錯誤?

工作表1是清單,
工作表2是rotmain2,
工作表3是imdb

順便說一下,這就是我的代碼的樣子。 我不確定如何使用代碼標簽。

Sub combine_imdb_rot_data()

' y is the index of the row in rotmain2 which corresponds to rotid

Dim y As Variant

Sheets("imdbmain").Select

For i = 1 To 4415

  ' select sheet list and assign rotid for value of the cell in row i+1  and column 7
  rotid = Sheets("list").Cells(i + 1, 7).Value

  ' if rotid is not empty,
  If Len(rotid) > 0 Then

    'look for a row that corresponds to the rotid in worksheet "rotmain2"
    Sheets("rotmain2").Select
    'x = Sheets("list").Cells(i + 1, 7).Row
    y = WorksheetFunction.Match(rotid, Range("B1:B4218"), 0)

    If IsNumeric(y) Then                             
        ' copy the information in the row             
        Range(Cells(y, 1), Cells(y, 13)).Select
        Selection.Copy                   
        ' paste it into row i+1 in worksheet "imdbmain"
         Sheets("imdbmain").Select
         'select row i+1 in imdbmain
        Range(Cells(i + 1, 9), Cells(i + 1, 21)).Select
        Workbooks(1).Sheets(1).Paste
        Application.CutCopyMode = False
    Else
        ' copy the information in the row                  
        Range(A4220, M4220).Select
        Selection.Copy

        ' paste it into row i+1 in worksheet "imdbmain"
         Sheets("imdbmain").Select
         'select row i+1 in imdbmain
        Range(Cells(i + 1, 9), Cells(i + 1, 21)).Select
        Workbooks(1).Sheets(1).Paste
        Application.CutCopyMode = False
    End If   
End If
Next
End Sub

我還嘗試了Remou建議的另一種方法。 這是.find方法的工作方式嗎? 我不確定,但是當我使用它時,會出現運行時錯誤13類型不匹配:

Sub combine_imdb_rot_data()

    ' y is the index of the row in rotmain2 which corresponds to rotid

    Dim y As Variant

  Sheets("imdbmain").Select

  For i = 1 To 4415

    ' select sheet list and assign rotid for value of the cell in row i+1  and column 7
    rotid = Sheets("list").Cells(i + 1, 7).Value

    ' if rotid is not empty,
    If Len(rotid) > 0 Then

        'look for a row that corresponds to the rotid in worksheet "rotmain2"
        Sheets("rotmain2").Select
        'x = Sheets("list").Cells(i + 1, 7).Row
        Set y = Range("B1:B4218").Find(rotid)


        If y Is Nothing Then

            ' copy the information in the row
            'Range("1:4," & x & ":" & x).Copy
            'Range("A&x"&:&"M&x").Copy
            'Copy empty row

            Range("A101:M101").Select
            Selection.Copy


            ' paste it into row i+1 in worksheet "imdbmain"
             Sheets("imdbmain").Select
             'select row i+1 in imdbmain
            Range(Cells(i + 1, 9), Cells(i + 1, 21)).Select
            Workbooks(1).Sheets(1).Paste


        Else

            ' copy the information in the row
            'Range("1:4," & x & ":" & x).Copy
            'Range("A&x"&:&"M&x").Copy

            Range(Cells(y, 1), Cells(y, 13)).Select
            Selection.Copy


            ' paste it into row i+1 in worksheet "imdbmain"
             Sheets("imdbmain").Select
             'select row i+1 in imdbmain
            Range(Cells(i + 1, 9), Cells(i + 1, 21)).Select
            Workbooks(1).Sheets(1).Paste
            Application.CutCopyMode = False




        End If

  End If
  Next


End Sub

您可以捕獲錯誤,或者使用查找:

rotid=5 ''Let us say

With Worksheets(1).Range("B1:B4218")
    ''Find returns a range object, so we use Set
    Set y = .Find(rotid, LookIn:=xlValues, lookAt:=xlWhole)
    If y Is Nothing Then
        Debug.Print "Not found"
    Else
        ''This will print a cell, $b$15, for example
        Debug.Print y.Address
        ''This will print 5
        Debug.Print y.Value
    End If
End With

更多信息: http : //msdn.microsoft.com/zh-cn/library/aa195730%28office.11​​%29.aspx

您可能要做的第一件事是On Error Resume Next模塊頂部放On Error Resume Next ”。 先嘗試一下。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM