我正在使用以下代碼來刪除excel表中的行。我使用了兩個不同的循環(第一個是For循環,第二個是Do-While循環)。如何在單個marcro子函數中使用多個循環
當我運行宏時,它只執行第一個循環(for循環),並且只刪除行4,6並且不執行第二個循環(Do-While循環)。但如果我運行它第二次然後執行第二循環(Do-While)並刪除行9,10,11,12,13。
我試圖獲得解決方案,在單次運行的宏中運行這兩個循環,但無法得到它。請讓我以單次運行宏的方式運行這兩個循環。
Row No A
1
2 Block1
3
4 del1
5 del2
6 del3
7
8 Block2
9 del1
10 del2
11 del3
12 del5
13 del5
代碼中使用:
Sub RowDelete()
Dim a
Dim b
Dim strt
Dim endr
strt = getrow("Blobk1")
endr = getrow("Block2")
For a = endr - 2 To strt + 3 Step -1
Worksheets("s1").Cells(a, 1).EntireRow.Delete Shift:=xlUp
Next
b = endr + 2
Do While Worksheets("s1").Cells(b, 1).Value <> ""
Worksheets("s1").Cells(b, 1).EntireRow.Delete Shift:=xlUp
Loop
End Sub
Function Getrow(str)
Dim a
Dim b
For a = 1 To 50
If Worksheets("s1").Cells(a, 1).Value = str Then
b = a
Exit For
End If
Next
getrow = b
End Function
在兩個循環之間添加'endr = getrow(「Block2」)'。 –
您是否嘗試刪除列「A Block1」和「Block2」以外的列A中的每一行? –
@ David:謝謝大衛,即使在今天,當我再次檢查代碼時,我發現同一個我錯過了「endr = getrow(」Block2「)」。因爲執行for循環後,「endr」的值會發生變化。 –