2016-10-17 66 views
0

當試圖從一個名爲Data的表複製行到由用戶輸入指定的新表時,我得到錯誤1004-應用程序或對象定義的錯誤。Visual Basic錯誤代碼1004-應用程序或對象定義的錯誤

它使用我想要的名稱創建我想要的工作表,但它不復制任何行。

Sub cond_copy() 
Dim ArtikelNummer As Variant 
ArtikelNummer = InputBox("Skriv in artikelnummer", "Artikelsortering" 
'skapa sheet enligt artikenummer 
Set NewSheet = Sheets.Add(After:=Sheets(Worksheets.Count), Count:=1, Type:=xlWorksheet) 
NewSheet.Name = ArtikelNummer 
'assuming the data is in sheet1 
Sheets(ArtikelNummer).Select 
RowCount = Cells(Cells.Rows.Count, "B").End(xlUp).Row 
For i = 1 To RowCount 
    'assuming the true statment is in column B 
    'Range(Range("A" & ActiveCell.Row), Range("AG" & ActiveCell.Row).End(xlToLeft)).Select 
    Range("B" & i).Select 
    check_value = ActiveCell 
    If check_value = ArtikelNummer Or check_value = ArtikelNummer Then 
     ActiveCell.EntireRow.Copy 
     'assuming the data is in sheet2 
     Sheets(ArtikelNummer).Select 
     RowCount = Cells(Cells.Rows.Count, "B").End(xlUp).Row 
     Range("B" & RowCount + 1).Select 
     ActiveSheet.Paste 
     Sheets("Data").Select 
    End If 
Next 
End Sub 

感謝所有幫助

+0

不會'行數=細胞(Cells.Rows.Count, 「B」)。完(xlUp).Row'總是等於1爲您計算的在片材的行數你剛剛創建? –

+0

您在此查看兩次相同的值:'如果check_value = ArtikelNummer或check_value = ArtikelNummer Then' –

回答

0

我覺得這是你以後的代碼:

Sub cond_copy() 
    Dim ArtikelNummer As Variant 
    Dim NewSheet As Worksheet 
    Dim RowCount As Long 
    Dim i As Long, x As Long 
    Dim check_value As Range 
    ArtikelNummer = InputBox("Skriv in artikelnummer", "Artikelsortering") 
    Set NewSheet = Sheets.Add(After:=Sheets(Worksheets.Count), Count:=1, Type:=xlWorksheet) 
    NewSheet.Name = ArtikelNummer 

    x = 1 'This is the next empty row on NewSheet. 
    With Worksheets("Data") 
     RowCount = .Cells(.Cells.Rows.Count, "B").End(xlUp).Row 
     For i = 1 To RowCount 
      If .Cells(i, 2) = ArtikelNummer Then 
       .Cells(i, 2).EntireRow.Copy Destination:= _ 
        NewSheet.Cells(x, 1) 
       x = x + 1 
      End If 
     Next i 
    End With 
End Sub 

它要求一個工作表名稱創建該工作表,然後查看B列中'數據'表中的每一行以獲取工作表名稱,並將該行復制到新工作表中。

enter image description here

+0

謝謝! 我看到的差異,但我仍然得到錯誤代碼1004. 你有什麼想法是什麼觸發錯誤? –

+0

現在它不會觸發任何錯誤,但它也不會複製任何內容,只會創建具有正確名稱的工作表 –

+0

當它確實導致錯誤時,它發生在哪條線上? 「數據」表中的列B是否有任何數據,並且列B中的任何值與新工作表名稱相同? –

0

感謝您的幫助。

我試圖修復它和代碼現在是:

Sub cond_copy() Dim ArtikelNummer As Variant ArtikelNummer = InputBox("Skriv in artikelnummer", "Artikelsortering") 'skapa sheet enligt artikenummer Set NewSheet = Sheets.Add(After:=Sheets(Worksheets.Count), Count:=1, Type:=xlWorksheet) NewSheet.Name = ArtikelNummer 'assuming the data is in sheet1 Sheets(Data).Select RowCount = Cells(Cells.Rows.Count, "B").End(xlUp).Row For i = 1 To RowCount 'assuming the true statment is in column B Range(Range("A" & ActiveCell.Row), Range("AG" & ActiveCell.Row).End(xlToLeft)).Select 'Range("B" & i).Select check_value = ActiveCell If check_value = ArtikelNummer Then ActiveCell.EntireRow.Copy 'assuming the data is in sheet2 Sheets(ArtikelNummer).Select RowCount = Cells(Cells.Rows.Count, "B").End(xlUp).Row Range("B" & RowCount + 1).Select ActiveSheet.Paste Sheets("Data").Select End If Next End Sub

相關問題