在sheet1中我有一个单元格A3(52):
在表格2中,我想删除表格中有A3数量的行。这个数字只能在第一列。
这是我的代码,但它不起作用:
Sub delete_ligne()
Dim i As Integer
Application.ScreenUpdating = False
For i = 1 To 6600
If (Cells(i,1) = ThisWorkbook.Sheets("Modification").Range("B7").Value)
Then
Cells(i, 1).EntireRow.Delete
i = i - 1
End If
Next
Application.ScreenUpdating = True
End Sub
任何解决方案?
答案 0 :(得分:0)
如果我正确理解了这个问题;
Dim wbThis As Workbook
Dim wsThis As Worksheet
Dim wsTarget As Worksheet
Dim tmp As Integer
Sub delete_ligne()
Set wbThis = ActiveWorkbook
Set wsThis = wbThis.Sheets(1)
Set wsTarget = wbThis.Sheets(2)
For i=1 To 100
wsThis.Activate
tmp = wsThis.Cells(3, i).Value
For j=3 To 100
wsTarget.Activate
If Cells(j,1).Value = tmp Then
Cells(j,1).EntireRow.Delete
End If
Next j
Next i
End Sub
第一圈(i):
First For循环遍历Sheet 1的单元格。它从A3开始直到A100。您可以调整代码中的值。
第二圈(j):
对于第一循环的每个元素,Second For循环遍历Sheet 2的单元格。如果有任何值,则完全删除该行。
答案 1 :(得分:0)
仍然不确定"它不起作用"意思是,但这可能会有所帮助:
Sub delete_ligne()
Dim rng as Range
Dim WB as Workbook
Dim i As Integer
Application.ScreenUpdating = False
Set WB = 'define your workbook here
Set rng = WB.Sheet(2).Range("B:B").Find (What:=WB.Sheet(1).Range("A3"), _
LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
While not Rng is Nothing
rng.Rows(1).EntireRow.Delete
Set rng = WB.Sheet(2).Range("B:B").Find (What:=WB.Sheet(1).Range("A3"), _
LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
Wend
Application.ScreenUpdating = True
End Sub
根据需要调整以定义WB
,Sheet(2)
和Sheet(1)
以指向正确的位置。
.Find
将比循环6600行快得多,并且不关心它找到/删除行的顺序。
如果有更多要检查的单元格为"A3"
答案 2 :(得分:0)
这样的事情应该有用...... 只需仔细检查哪个单元格实际上具有您的价值作为您的代码并且问题不同意。
Sub delete_ligne()
Dim i As Integer
Application.ScreenUpdating = False
For i = 6600 To 1 Step -1
If Cells(i,1) = ThisWorkbook.Sheets("Modification").Range("A3").Value Then
Rows(i).EntireRow.Delete
End If
Next i
Application.ScreenUpdating = True
End Sub