【发布时间】:2025-12-19 05:00:07
【问题描述】:
我一直在网上搜索哪里可以找到以下最有效和最简单的方法:
我有一个包含 3 张工作表的电子表格:
- 信息
- 培训
- 离校生
在信息表中,B 列包含有条件格式化的验证文本。有两种验证选项:
- 主动
- 离开者
我希望一旦单元格值从“活动”更改为“离开”,整行将从工作表中删除并移动到“离开”工作表。
我使用了下面的代码,它可以工作,但是如果没有离开者,它将转移第一行“活动”。谁能告诉我有什么问题?
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 列从“活动”更改为“离开者”,培训表也会更改,但我希望删除培训表中的行。
第三,如果我不小心将行从个人信息表移动到离开表,是否有可能通过选择回“活动”单元格值,该行会移回原来的位置?
非常感谢。希望它足够清楚。
【问题讨论】:
-
何时以及什么触发了您使用的 sub?你有按钮什么的吗?
-
我创建了一个按钮,因为我不知道如何自动化它。如果单元格值从 'active' 更改为 'leaver'
-
vba 是一种事件驱动语言。为了通过运行一些代码来自动化某些事情,你需要一个事件发生。在这里,您没有表单控件来触发事件。因此,您将需要一个组合框或其他东西并使用它的一个属性(如更改属性)来触发您的功能。否则,你想要的就不会发生!