簡體   English   中英

對象“工作表”的方法“范圍”失敗

[英]Method 'range' of object 'Worksheet' failed

我有一個包含8張紙的excel文件,我想將范圍與數據從“ adws”,“ chws”,“ homelines”,“ ariel”,“ kit”,“ philip”和“ timmy”合並到表“ ws” ”(標題除外)。

這是我的代碼:

Private Sub combine_btn_Click()
Dim ws As Worksheet
Dim adws As Worksheet
Dim chws As Worksheet
Dim homelines As Worksheet
Dim ariel As Worksheet
Dim kit As Worksheet
Dim philip As Worksheet
Dim timmy As Worksheet
Dim adws_co As Long
Dim chws_co As Long
Dim homelines_co As Long
Dim ariel_co As Long
Dim kit_co As Long
Dim philip_co As Long
Dim timmy_co As Long
Dim ws_co As Long

Set ws = ThisWorkbook.Sheets("Data")
Set adws = ThisWorkbook.Sheets("SL - Adult")
Set chws = ThisWorkbook.Sheets("SL - Children")
Set homelines = ThisWorkbook.Sheets("Homelines & Acc")
Set ariel = ThisWorkbook.Sheets("Hardlines - Ariel")
Set kit = ThisWorkbook.Sheets("Hardlines - Kit")
Set philip = ThisWorkbook.Sheets("Hardlines - Philip")
Set timmy = ThisWorkbook.Sheets("Hardlines - Timmy")

ws_co = ws.Range("A2:F" & Rows.Count).End(xlDown).Row + 1
adws_co = adws.Range("D2:F" & Rows.Count).End(xlDown).Row + 1
chws_co = chws.Range("D2:F" & Rows.Count).End(xlDown).Row + 1
homelines_co = homelines.Range("D2:F" & Rows.Count).End(xlDown).Row + 1
ariel_co = ariel.Range("D2:F" & Rows.Count).End(xlDown).Row + 1
kit_co = kit.Range("D2:F" & Rows.Count).End(xlDown).Row + 1
philip_co = philip.Range("D2:F" & Rows.Count).End(xlDown).Row + 1
timmy_co = timmy.Range("D2:F" & Rows.Count).End(xlDown).Row + 1


adws.Range("D2:F" & adws_co).SpecialCells(xlCellTypeVisible).Copy

ws.Select
Range("D" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues

chws.Range("D2:F" & chws_co).SpecialCells(xlCellTypeVisible).Copy

ws.Select
Range("D" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues

homelines.Range("D2:F" &homelines_co).SpecialCells(xlCellTypeVisible).Copy

ws.Select
Range("D" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues

ariel.Range("D2:F" & ariel_co).SpecialCells(xlCellTypeVisible).Copy

ws.Select
Range("D" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues

kit.Range("D2:F" & kit_co).SpecialCells(xlCellTypeVisible).Copy

ws.Select
Range("D" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues

philip.Range("D2:F" & philip_co).SpecialCells(xlCellTypeVisible).Copy

ws.Select
Range("D" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues

timmy.Range("D2:F" & timmy_co).SpecialCells(xlCellTypeVisible).Copy

ws.Select
Range("D" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues

但是,當表單“ philip”為空時,我收到以下錯誤:對象“ _Worksheet”的方法“ Range”在此行失敗:

philip.Range("D2:F" & philip_co).SpecialCells(xlCellTypeVisible).Copy

我可以知道有什么辦法解決嗎? 提前致謝!

Excel中的最大行是1048576。如果“ philip”表為空,則意味着philip_co的值為1048577(在函數中加1)。 現在,如果您嘗試選擇/復制D2:F1048577的范圍,則Excel將引發錯誤,因為該范圍根本不存在。

即使這不能解決問題,您也已經參考了圖紙,因此您無需以任何方式選擇它們。 像這樣做:

Private Sub combine_btn_Click()

    Dim ws As Worksheet
    Dim adws As Worksheet
    Dim chws As Worksheet
    Dim homelines As Worksheet
    Dim ariel As Worksheet
    Dim kit As Worksheet
    Dim philip As Worksheet
    Dim timmy As Worksheet
    Dim adws_co As Long
    Dim chws_co As Long
    Dim homelines_co As Long
    Dim ariel_co As Long
    Dim kit_co As Long
    Dim philip_co As Long
    Dim timmy_co As Long
    Dim ws_co As Long

    With ThisWorkbook
        Set ws = .Sheets("Data")
        Set adws = .Sheets("SL - Adult")
        Set chws = .Sheets("SL - Children")
        Set homelines = .Sheets("Homelines & Acc")
        Set ariel = .Sheets("Hardlines - Ariel")
        Set kit = .Sheets("Hardlines - Kit")
        Set philip = .Sheets("Hardlines - Philip")
        Set timmy = .Sheets("Hardlines - Timmy")
    End With

    ws_co = ws.Cells(ws.Rows.Count, 6).End(xlUp).Row + 1
    adws_co = adws.Cells(adws.Rows.Count, 6).End(xlUp).Row + 1
    chws_co = chws.Cells(chws.Rows.Count, 6).End(xlUp).Row + 1
    homelines_co = homelines.Cells(homelines.Rows.Count, 6).End(xlUp).Row + 1
    ariel_co = ariel.Cells(ariel.Rows.Count, 6).End(xlUp).Row + 1
    kit_co = kit.Cells(kit.Rows.Count, 6).End(xlUp).Row + 1
    philip_co = philip.Cells(philip.Rows.Count, 6).End(xlUp).Row + 1
    timmy_co = timmy.Cells(timmy.Rows.Count, 6).End(xlUp).Row + 1


    With ws
        adws.Range("D2:F" & adws_co).SpecialCells(xlCellTypeVisible).Copy
        .Range("D" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues
        chws.Range("D2:F" & chws_co).SpecialCells(xlCellTypeVisible).Copy
        .Range("D" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues
        homelines.Range("D2:F" & homelines_co).SpecialCells(xlCellTypeVisible).Copy
        .Range("D" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues
        ariel.Range("D2:F" & ariel_co).SpecialCells(xlCellTypeVisible).Copy
        .Range("D" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues
        kit.Range("D2:F" & kit_co).SpecialCells(xlCellTypeVisible).Copy
        .Range("D" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues
        philip.Range("D2:F" & philip_co).SpecialCells(xlCellTypeVisible).Copy
        .Range("D" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues
        timmy.Range("D2:F" & timmy_co).SpecialCells(xlCellTypeVisible).Copy
        .Range("D" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues
    End With

End Sub

此外,沒有進一步的信息你的代碼看起來不錯給我。

編輯:有答案者Justyna排序,沒有看到一個!

暫無
暫無

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

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