我正在研究一個宏,它將在一個工作簿中的多個工作表上運行,在工作表之間切換並將數據複製/粘貼到一個主工作表。Excel VBA列範圍選擇選擇錯誤的列
我的問題是,當我切換到使用的Windows(指數).Activate另一個工作表,然後嘗試選擇一些列刪除,它不正確地選擇了列。我使用下面的代碼,EXACT相同的代碼在主表單中工作得很好,但是當我切換到VBA代碼中的另一個表單並使用它時,它會選擇從第1列開始到第數據。
下面的代碼背後的想法是從第1列開始,搜索名爲「綜合評級」的列。然後,我想刪除從第3列開始的所有列到綜合評級列。
有人能告訴我我做錯了什麼嗎?非常感謝您的幫助!
For counter = 1 To 40 Step 1
Cells("1", counter).Select
strval = ActiveCell.Value
If strval = "Composite Rating" And counter <> 3 Then
Range(Cells(1, 3), Cells(1, counter - 1)).EntireColumn.Select
Selection.Delete Shift:=xlLeft
Exit For
End If
Next counter
編輯:對不起,應該提到我的設置。我在Windows 7上使用Excel 2007.我已經嘗試了xls和xlsx文件,結果相同。
真棒!這工作,非常感謝!實際上,當我將自己的代碼更改爲Delete時,而不是使用Select和Selection.Delete時,它也起作用了!你有沒有看過在哪裏使用EntireColumn.Select實際上選擇所有列無論是什麼?你的代碼更有效率,使用Find函數,所以我將實現它,而不是循環遍歷列。我對VBA比較新,所以我應該搜索函數列表:)再次感謝! – zpert 2013-03-10 16:37:27
一個簡單的問題......重新使用rng變量在同一個Sub中查找其他範圍會有什麼問題嗎?我不知道VBA如何處理引用變量,指針,範圍等,如果在不影響原始範圍的情況下重置它,將會出現問題。謝謝! – zpert 2013-03-10 16:41:08
@zpert你可以重新使用rng變量。但是因爲你是vba世界的新手,所以我會說聲明新的變量,並用它們來避免任何混淆。 – 2013-03-10 16:56:49