只需一个按钮即可在不同的工作表上运行多个宏

只需一个按钮即可在不同的工作表上运行多个宏

我有一个带有两个宏的宏:

  • 第一个删除 sheet2 column1 上的所有数据
  • 第二个对 Sheet1 上的两列进行排序,并将数据放在 Sheet2 的第 1 列。

在此处输入图片描述

我想单击一次即可运行它们。我该怎么做?

答案1

根据所附的屏幕截图,我发现您有两个 VBA 宏,并且您正在尝试比较两列并将不匹配的值复制到另一张表中。

为此,您需要将两个宏合并为一个。

我想建议一种方法,将比较源表中的两列中不匹配的值,然后将数据复制到另一张表中。

宏将在行上应用颜色格式,并在复制后反转两列的格式。

Sub HighlightColumnDifferences()

    Dim bothcolumns As Range, i As Integer

    Set bothcolumns = Selection

    With bothcolumns

        For i = 1 To .Rows.Count

            If Not StrComp(.Cells(i, 1), .Cells(i, 2), vbBinaryCompare) = 0 Then

                Range(.Cells(i, 1), .Cells(i, 2)).Interior.ColorIndex = 6

            End If

        Next i

    End With

Call Copy
Application.CutCopyMode = False


End Sub

Sub Copy()

    Dim i As Long

    For i = 1 To 10
        If Sheets("Sheet1").Range("A" & i).Interior.ColorIndex = xlNone Then
            Range("A" & i).Copy Destination:=Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Offset(1)
        End If
        If Sheets("Sheet1").Range("B" & i).Interior.ColorIndex = xlNone Then
            Range("B" & i).Copy Destination:=Sheets("Sheet2").Range("B" & Rows.Count).End(xlUp).Offset(1)
        End If
    Next i

    Worksheets("Sheet1").Activate
    Range("A1:B10").ClearFormats
    Application.CutCopyMode = False

End Sub

怎么运行的:

  • 复制&粘贴两种代码均为标准模块。
  • 从中的两列中选择Sheet 1要比较的数据。
  • 跑步 HighlightColumnDifferences宏。

注意:

  • 您可以选择任意两列进行比较,而不仅仅是 A 和 B。
  • 您可以调整第二个宏中的For i = 1 To 10Sheet Name和数据范围的值。A1:B10

相关内容