2015-06-10 24 views
1

我一直在使用以下操作刪除一行。VBA-刪除工作表1中的整行

Rows([2]).EntireRow.Delete 

但是,這是當我的工作簿只有一張表。 sheet2中添加了一個命令按鈕,用於調用sheet1中存在的宏。

我應該如何修改我的上面的代碼,以便VBA刪除sheet1的第二行?

回答

3

除了指定行之外,您只需要指定行所在的表單。即

Worksheets("Sheet1").Rows(2).EntireRow.Delete 

應該做你想做的。如果您調用的工作表與「Sheet1」不同,請更改引號內的內容。嚴格地說,你不需要指定它是你想要刪除的整行,因爲你已經說過它是你正在處理的行,但它在那裏也不應該有任何傷害。

如果您還希望從一個不同的工作簿做刪除(或只是確保刪除發生在正確的工作簿),你也可以指定工作簿名稱:

Workbooks("Workbookname.xlsm").Worksheets("Sheet1").Rows(2).EntireRow.Delete 
+0

爲什麼你使用'EntireRow'如果你已經指定行號,'EntireRow'的情況下,需要確定的範圍內,'範圍(「A1」)的行時使用。EntireRow'例如 – Vasily

+0

它是OP所使用的,保持代碼與已經使用的代碼儘可能相似,這將使得從OP的角度來看更容易理解,特別是因爲沒有任何理由去改變它。 @Vasily – eirikdaude

+0

在這種情況下,代碼被認爲是超量的,所以它的含義很簡單* oil in oil *,但無論如何這是您的答案,您可以使用或不使用來自其他用戶的評論 – Vasily

1

如果您按鈕在任何其他工作表中,並且您想從另一工作表中刪除一行,您只需激活該工作表即可。例如,您試圖刪除Sheet1中的行,然後您可以通過此單行命令激活表單。

Sheets(0).Activate 
+0

激活工作表而不是引用您想要編輯的範圍[不被視爲良好實踐](https://blogs.office.com/2009/03/12/excel-vba-performance-coding-best-practices /)。也沒有任何保證,OP的工作表是索引號爲0. – eirikdaude

+0

的工作表達成一致。但是,這只是一個例子,展示如何激活工作表並對其進行處理。 –

+0

所以要激活我的sheet1命名爲「DAT_FL」,我需要寫 表(1)。激活 – swarm