我正在寫一個宏,它可以在保存在模板中的Excel表格中工作,然後從單獨的應用程序導出到.xls或.xlsx。該宏根據輸入到單元格中的數量複製兩列'x'次數。Excel VBA:運行時錯誤'1004':選擇範圍類失敗的方法
Sub Matrix_Quantity()
Dim x As Integer
x = ActiveWorkbook.Sheets("Inspection Sampling Matrix").Cells(11, 4)
Dim n As Integer
n = x - 1
For numtimes = 1 To n
'Loop by using x as the index number to make x number copies.
Sheets("Inspection Report").Columns("F:G").Select
Selection.Copy
Selection.Insert Shift:=x1 + nToRight
Next
End Sub
我遇到的問題是,當使用模板(.xlt)運行宏時,它運行良好。只要模板轉換爲.xls或.xlsx,它就會正常工作並出現運行時錯誤。當調試宏它突出
Sheets("Inspection Report").Columns("F:G").Select
我的感覺是,它正在尋找在名爲.xlt工作簿中選擇列,但在轉換爲.xls或.xlsx它仍試圖查找名爲.xlt工作簿和我不知道如何或爲什麼這樣做。
這是因爲您的工作表「檢查報告」在宏運行的時刻未處於活動狀態。請閱讀[**如何避免使用Select/Active語句**](http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select)。您可以用'Sheets(「Inspection Report」)替換您的代碼。列(「F:G」)。複製'和'表格(「檢查報告」)列(「F:G」)。插入Shift:= x1 + nToRight' –
感謝您的迴應。當我插入你推薦的代碼並運行宏時,Excel將崩潰而沒有錯誤。它只是帶來了Windows錯誤「Microsoft Excel已停止工作」 – user3384820
其實,我不明白你在這裏做什麼:'Shift:= x1 + nToRight'?它應該是'Shift:= xlToRight'? –