2017-07-06 30 views
0

出於某種原因,我無法弄清楚如何做到這一點......它似乎很簡單:開始在特定的行刪除不需要的列 - Excel VBA中

試圖刪除其起始於特定行不需要的列。

例如: 想要刪除從Wsh2的第10行開始的列C,D,E,M,N和L.

'deleting columns that are unwanted 
Cells(wsh2.Cells("C10"), wsh2.Cells("C10").End(xlDown)).EntireColumn.Delete 
Cells(wsh2.Cells("D10"), wsh2.Cells("C10").End(xlDown)).EntireColumn.Delete 
Cells(wsh2.Cells("E10"), wsh2.Cells("C10").End(xlDown)).EntireColumn.Delete 
Cells(wsh2.Cells("M10"), wsh2.Cells("C10").End(xlDown)).EntireColumn.Delete 
Cells(wsh2.Cells("N10"), wsh2.Cells("C10").End(xlDown)).EntireColumn.Delete 
Cells(wsh2.Cells("L10"), wsh2.Cells("C10").End(xlDown)).EntireColumn.Delete 
End Sub 

我調整了我在這裏找到的使用Range的前面的代碼。我也試圖使用聯盟和範圍,但似乎無法弄清楚。

基本上:在我從之前的工作表中複製了一系列行後,試圖刪除從特定行開始的特定列。

任何幫助將是偉大的。謝謝!

+0

因此,您不是要刪除整列,而只是清除第10行及以下的數據? – Busse

+0

清除第10行和第10行以下的數據,然後我想隱藏已清除的列,以便它不顯示已清除的列與數據保存的列之間的間隔 – MAJ10

+0

行1中是否仍有數據 - 9?如果你隱藏了列,你也會忽略這些數據。 – Busse

回答

1

如果使用EntireColumn.Delete它將刪除整個列,您需要獲取範圍並刪除它,例如。

Range("C10:C" & Rows.Count).Delete 
+0

由於某種原因,我得到運行時錯誤1004當我試試這個 – MAJ10

+0

嘗試:wsh2.Range(「C10:C」和wsh2.Rows.Count)。刪除如果沒有工作,請發佈您的更新代碼 – jmdon

+0

@ MAJ10由於不合格使用「行」,運行時錯誤1004爲_always_。按照評論中的建議。 – FreeMan

0

你不會真的要刪除整個列,如你所說。您要清除單元格C10:Cend,D10:Dend,E10:Eend, M10:Mend,N10:NendL10:Lend。這就是你想讓你的代碼做的事情。導航到選擇的單元格,並清除該特定座標下的所有單元格。爲了方便起見,您可以循環遍歷從C10C10000的所有單元格,並刪除每個單元格的內容,例如,實現起來非常簡單,但可能效率不高。

+0

或者只是使用'Range(「C10:C」&Rows.Count).Delete',正如jmdon在他的回答中提到的那樣。效率更高。 –