VBA范围1004错误

我正在使用下面的代码:

Sub CSVParser() Dim i As Integer Dim x As Integer Dim values As Range Sheets("CSV Paste").Select Range("A3").Select For i = 1 To Range("A3", Range("A3").End(xlDown)).Rows.Count Range(Selection, Selection.End(xlToRight)).Select Selection.Copy Sheets("Working Sheet 1").Select Range("A1").Select 'problem code Do Until ActiveCell.Value = "" If ActiveCell.Value = "" Then Exit Do Else ActiveCell.Offset(1, 0).Select End If Loop ActiveSheet.Paste Sheets("CSV Paste").Select ActiveCell.Offset(1, 0).Select Next End Sub 

但是, Range("A1").SelectSheets("Working Sheet 1").Select 。Select正在启动运行时错误“1004”

有谁知道为什么? 我已经以任何方式重新排列了这一点,我可以再次从头开始打印。

我认为这是你正在努力实现的(没有所有不必要的Select ):

 Option Explicit Sub CSVParser() Dim i As Long Dim x As Long Dim LastRow As Long Dim PasteRow As Long With Sheets("CSV Paste") LastRow = .Range("A3").End(xlDown).Row For i = 3 To LastRow PasteRow = Sheets("Working Sheet 1").Cells(Sheets("Working Sheet 1").Rows.Count, "A").End(xlUp).Row .Range(.Range("A" & i), .Range("A" & i).End(xlToRight)).Copy Destination:=Sheets("Working Sheet 1").Range("A" & PasteRow + 1) Next i End With End Sub 

试试这个版本的代码:

 Sub CSVParser() Dim wb As Workbook Dim wsCSV As Worksheet Dim wsWork As Worksheet Set wb = ActiveWorkbook Set wsCSV = wb.Sheets("CSV Paste") Set wsWork = wb.Sheets("Working Sheet 1") wsCSV.Range("A3").CurrentRegion.Copy wsWork.Cells(wsWork.Cells.Count, "A").End(xlUp).Offset(1) End Sub 

使用.Select和.Activate不被视为“最佳实践”。 请参阅如何避免在Excel VBAmacros中使用select 。 是的,使用微距logging器的代码是一个很好的开始,但是你必须在某个时候脱离练习。

执行批量操作优选循环通过不确定数量的行或列。

 Option Explicit Sub CSVParser() Dim lastCol As Long With Worksheets("CSV Paste") With .Range(.Cells(3, "A"), .Cells(.Rows.Count, "A").End(xlUp)) lastCol = .CurrentRegion.Columns.Count With .Resize(.Rows.Count, lastCol) .Copy Destination:=Sheets("Working Sheet 1").Range("A1") End With End With End With End Sub