【发布时间】:2019-02-15 23:45:18
【问题描述】:
我有 2 个独立工作的 Private Sub Worksheet_change(ByVal Target As Range) 代码。我需要他们在同一张纸上工作。每当我这样做时,第二个代码都不会运行。请问如何合并这些!!?
代码 1:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, cel As Range
Set rng = Intersect(Target, Range([H2], Cells(Rows.Count,
"H").End(xlUp)))
If rng Is Nothing Then Exit Sub
Application.EnableEvents = False
rng.Offset(, 1).FormulaR1C1 = "=IF(RC[-1]<>"""",R1C[6] & ""-"" &" &
"TEXT(COUNTA(R2C[-1]:RC[-1]),""0000"") & ""-"" & R1C[7],"""")"
Application.EnableEvents = True
End Sub
如果在 H 中提供信息,代码 1 正在使用 P1 和 O1 在 I 列中填充自动编号 代码2:
Private Sub Move_blanks_To_Bottom(ByVal Target As Range)
If Target.CountLarge > 1 Then Exit Sub
If Target.Column <> 9 Then Exit Sub
Range("A1", Range("A" & Rows.Count).End(xlUp)).Resize(, 11).Sort
key1:=Range("I1"), order1:=xlAscending, Header:=xlYes
End Sub
代码 2 使用列 I 并对值进行排序,因此如果 I 中有值,它将将该行移动到下一个可用行,如果单元格 I 为空白,则该行将有效地完成 I 列。
据我了解,您不能运行 2 个私有子代码,那么我将如何在同一张纸上同时运行这两个子代码?
谢谢!
【问题讨论】:
-
从第一个呼叫第二个
Sub?请注意,您通常不会“运行”Worksheet_Change- 它是一个事件处理程序。 -
您是否尝试在
Worksheet_Change事件的末尾添加DoEvents? -
@Comintern 当我打电话时我收到一个错误“参数不是可选的”关于如何克服这个问题的任何想法?我的 VBA 并不出色 - 谢谢!
-
@Zac 我的 VBA 并不神奇,我只是在第一个代码的 Application.EnableEvents = True 之后添加 DoEvents 吗?
-
@DMO 你需要传递参数。