在Excel中按字母顺序动态排序列表

在Excel中按字母顺序动态排序列表,excel,vba,Excel,Vba,我在Excel中使用宏时遇到一些困难。我在包含2个宏的工作簿中构建了一个调用记录器: 宏A将所有数据从工作表A移到工作表B中 宏B自动对数据进行排序,使一列始终按字母降序排列 但是,我不能让两个宏同时工作。它们都单独工作,但当我试图将一个宏实现到包含另一个宏的工作簿中时,它们似乎会相互抵消。我哪里做错了?例如,有没有一种方法可以组合这两个宏?宏在下面 宏A: Sub Macro6() ' Macro6 Macro Application.ScreenUpdating = F

我在Excel中使用宏时遇到一些困难。我在包含2个宏的工作簿中构建了一个调用记录器:

  • 宏A将所有数据从工作表A移到工作表B中
  • 宏B自动对数据进行排序,使一列始终按字母降序排列
但是,我不能让两个宏同时工作。它们都单独工作,但当我试图将一个宏实现到包含另一个宏的工作簿中时,它们似乎会相互抵消。我哪里做错了?例如,有没有一种方法可以组合这两个宏?宏在下面

宏A:

 Sub Macro6()
    ' Macro6 Macro
    Application.ScreenUpdating = False 
    Sheets("Logger").Select
    Range("B4:I4").Select
    Selection.Copy
    Sheets("DATA").Select
    Range("B4").Select
    lMaxRows = Cells(Rows.Count, "B").End(xlUp).Row
    Range("B" & lMaxRows + 1).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Sheets("Logger").Select
    Range("B4:I4").Select
    Selection.ClearContents
End Sub
宏B:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error Resume Next
    If Not Intersect(Target, Range("H:H")) Is Nothing Then
        Range("H3").Sort Key1:=Range("H4"), _
          Order1:=xlDescending, Header:=xlYes, _
          OrderCustom:=1, MatchCase:=False, _
          Orientation:=xlTopToBottom
    End If
End Sub

提前感谢您的帮助。

宏A是您需要显式运行的,而宏B是由选择更改事件触发时自动运行的。哪个工作表模块包含宏B,以及您希望宏B按什么顺序执行?如果您正确理解所需内容,则无法执行该操作!Excel宏不会并行运行,而是一个接一个地运行。无论是在不同的工作表中,还是在同一Excel实例的工作簿中,@sktneer-宏B仅包含在工作簿中而不是模块中,宏a包含在模块2中。需要先执行宏A,然后宏B将启动并自动排序数据。@Blenikos-如果不可能,是否有办法解决此问题?@JCarne,您的代码与叙述不符:宏A未移动“将所有数据从工作表A移动到工作表B”而它只是粘贴单元格“B4:I4”的内容。此外,marco A始终在工作表“记录器”和“数据”上运行,而宏B(如果在此工作簿代码窗格中)在任何工作表选择更改时(重新)运行。您可能需要明确指出,宏A是需要显式运行的,而宏B是由选择更改事件触发时自动运行的。哪个工作表模块包含宏B,以及您希望宏B按什么顺序执行?如果您正确理解所需内容,则无法执行该操作!Excel宏不会并行运行,而是一个接一个地运行。无论是在不同的工作表中,还是在同一Excel实例的工作簿中,@sktneer-宏B仅包含在工作簿中而不是模块中,宏a包含在模块2中。需要先执行宏A,然后宏B将启动并自动排序数据。@Blenikos-如果不可能,是否有办法解决此问题?@JCarne,您的代码与叙述不符:宏A未移动“将所有数据从工作表A移动到工作表B”而它只是粘贴单元格“B4:I4”的内容。此外,marco A始终在工作表“记录器”和“数据”上运行,而宏B(如果在此工作簿代码窗格中)在任何工作表选择更改时(重新)运行。你可能想澄清一下