代码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个私人子代码,那么我将如何同时在同一张纸上同时运行这两个子代码?
谢谢!
答案 0 :(得分:1)
由于您的第一个代码在Exit Sub)
失败时退出(Intersect
,因此您必须在If
语句上方调用第二个子例程。您必须将其传递给{ {1}}以及:
Target
但是,我认为最好重写一下。不必到处都退出子例程,而要在If语句中放置相关的代码位,以便例程可以运行到完成并正常退出:
Call Move_blanks_To_Bottom(Target)