這是我第一次嘗試VBA,所以我爲我的無知道歉。情況如下:我有一個由4列和629行組成的電子表格。當我試圖做的是遍歷每行中的4個單元格並檢查空白單元格。如果有一行包含空白單元格,我想從Sheet1剪切它並將其粘貼到Sheet2的第一個可用行中。Excel - 將包含空單元格的行移動到另一個工作表
(理想情況下的列數和行數是動態的,基於每個電子表格上,但我不知道如何通過行和列迭代動態)
Sub Macro1()
'
' Macro1 Macro
' Move lines containing empty cells to sheet 2
'
' Keyboard Shortcut: Ctrl+r
'
Dim Continue As Boolean
Dim FirstRow As Long
Dim CurrentRow As Long
Dim LastRow As Long
Dim EmptySheetCount As Long
Dim Counter As Integer
'Initialize Variables
LContinue = True
FirstRow = 2
CurrentRow = FirstRow
LastRow = 629
EmptySheetCount = 1
'Sheets(Sheet1).Select
'Iterate through cells in each row until an empty one is found
While (CurrentRow <= LastRow)
For Counter = 1 To 4
If Sheet1.Cells(CurrentRow, Counter).Value = "" Then
Sheet1.Cells(CurrentRow).EntireRow.Cut Sheet2.Cells(EmptySheetCount, "A")
EmptySheetCount = EmptySheetCount + 1
Counter = 1
CurrentRow = CurrentRow + 1
GoTo BREAK
Else
Counter = Counter + 1
End If
Counter = 1
BREAK:
Next
Wend
End Sub
當我運行它,我通常在Sheet1.Cells(CurrentRow,Counter).Value =「」區域出現錯誤,所以我知道我錯誤地引用了工作表。我試過了表格(Sheet1),工作表(「Sheet1」),似乎沒有任何工作。但是,當我切換到工作表(「Sheet1」)時,它會運行並凍結Excel。
我知道我在做多件事情是錯誤的,我只知道方式太少知道什麼。
非常感謝。對不起,廢話格式化。
這是極好的,tospig,它精美的作品。我一直在爲此工作幾個小時,並在幾分鐘之內就完成了。通過代碼進行調試和步進絕對是一個很好的調用。我理解你所做的大部分工作,只有一些例外。在下面的字符串:wksData.Range(「XFD1」),我認爲這是特定於Excel的東西?與下一行中的字符串相同? – coreytrevor 2015-02-10 22:06:00
@coreytrevor'XFD'是Excel工作表(2007版)中的最後一列。 '1048576'是最後一行。 'End(xlup)'在說,去最後一行(1048576),然後'上',直到找到一些數據。這個數據的行就是'lastRow'。 – tospig 2015-02-10 22:16:45
真棒,你一直非常有幫助。再次感謝您抽出時間。 – coreytrevor 2015-02-10 22:26:41