我試圖從單元格的行開始複製數據,單元格的值爲「深度(m)」並結束於下一空白行。它們之間的行數會有所不同,我有400個電子表格來做這件事。在空白行處結束複製循環時出現1004錯誤
錯誤:
Run-time error '1004':
Application-defined or object-defined error
這裏是我的代碼:
Sub CopyDepth()
Dim rownum As Long
Dim startrow As Long
Dim endrow As Long
Dim lastrow As Long
rownum = 1
colnum = 1
lastrow = Worksheets("Profile").Range("A65536").End(xlUp).Row
With ActiveWorkbook.Worksheets("Profile").Range("a1:a" & lastrow)
For rownum = 1 To lastrow
Do
If .Cells(rownum, 1).Value = "Depth (m)" Then
startrow = rownum
End If
rownum = rownum + 1
If (rownum > lastrow) Then Exit For
Loop Until .Cells(rownum, 1).Value = ""
endrow = rownum
rownum = rownum + 1
Worksheets("Profile").Range(startrow & ":" & endrow).Copy
Sheets("data").Select
Range("A1").Select
ActiveSheet.Paste
Next rownum
End With
End Sub
它的工作原理,如果改變這一行:
Loop Until .Cells(rownum, 1).Value = ""
這樣:
Loop Until .Cells(rownum, 1).Value = "Doe (Jane, corrected):"
不幸的是,我無法使用它,因爲該文本在工作簿和工作簿之間也會有所不同。
我在這裏我的數據樣本:
Big Lake
29 October, 2012
Joe & Jill
Blue [Big] Lake, Utah (USA)
OLD meter (#00314)
Depth (m) T (deg-C)
0 31.21
1 32.64
2 34.70
3 36.76
4 36.92
5 36.92
6 36.12
7 35.47
8 35.05
9 34.32
10 33.96
Doe (Jane, corrected):
N: 8.0m
S: 8.0m
我真正想要複製是從深度(米)下降到10 33.96到新的工作表。我一直在採摘這一段時間,但無法得到它。調試器指向這條線:
Worksheets("Profile").Range(startrow & ":" & endrow).Copy
任何幫助將是偉大的。謝謝! -Susan
你有哪些代碼?在模塊或表單中? – bonCodigo
400 spreadsheets ....如果你不打算優化你的代碼,它會使你的奶酪傳播;) – bonCodigo
在'For'循環中改變循環中使用的計數器的值通常是一個嚴重的壞主意 - 'rownum '在這種情況下。我不確定爲什麼你甚至有一個'For'循環,因爲'Do'循環似乎足夠自己 – barrowc