[英]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.