我一直在网上搜索哪里可以找到以下最有效,最简单的方法:
我有一张包含3张纸的电子表格:
在信息表中,B列包含有条件格式化的验证文本。有两种验证选项:
我想要一旦从活跃的'更改单元格值到了Leaver'将整行从纸张中移除并移至“Leaver”页面。
我已经使用了下面的代码,但它有效,但是如果没有离开者,它将转移第一行'有效'。谁能告诉我这是什么问题?
Sub AlexR688(x)
'For http://www.mrexcel.com/forum/excel-q...ific-text.html
'Using autofilter to Copy rows that contain centain text to a sheet called Errors
Dim LR As Long
Range("B2").EntireRow.Insert Shift:=xlDown
LR = Sheets("Personal Information").Cells(Rows.Count, "B").End(xlUp).Row
LR1 = Sheets("Leavers").Cells(Rows.Count, "B").End(xlUp).Row + 1
With Sheets("Personal Informaiton").Range("B2:C" & LR)
.AutoFilter
.AutoFilter Field:=1, Criteria1:="Leaver", _
Operator:=xlOr, Criteria2:=":Leaver"
.SpecialCells(xlCellTypeVisible).EntireRow.Copy Destination:=Sheets("Leavers").Range("A" & LR1)
.SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
End Sub
其次,我想在“培训”中做同样的事情。片。但在那里,B栏包含相同的“活跃”,“离开者”和“离开者”。这是从个人信息中引用的。因此,一旦个人信息表B列从“活动”变为“#”;对于' leaver',培训表也会改变,但我希望删除培训表中的行。
第三,如果我不小心将一行从个人信息表移到了离开者表,那么是否可以通过选择回到“活跃”状态。单元格值该行会移回原来的位置吗?
非常感谢你。希望它足够清楚。
答案 0 :(得分:0)
这是最简单的方法
Private Sub imperecheaza_Click()
Dim ws As Worksheet
Dim Rand As Long
Set ws = Worksheets("BD_IR")
Rand = 3
Do While ws.Cells(Rand, 4).Value <> "" And Rand < 65000
If ws.Cells(Rand, 4).Value = gksluri.Value * 1 And ws.Cells(Rand, 5).Value = gksluri.List(gksluri.ListIndex, 1) * 1 Then
ws.Rows(Rand) = "" '(here you will delete entire Row)
gksluri.RemoveItem gksluri.ListIndex
Exit Do
End If
Rand = Rand + 1
Loop
End Sub