1 つのボタンで異なるシート上の複数のマクロを実行する

1 つのボタンで異なるシート上の複数のマクロを実行する

マクロが 2 つあるものが 1 つあります:

  • 最初のものはシート2の列1のデータを削除します
  • 2 番目は sheet1 の 2 つの列を並べ替え、データを sheet2 の列 1 に配置します。

ここに画像の説明を入力してください

両方をワンクリックで実行したいのですが、どうすればよいですか?

答え1

添付のスクリーン ショットに基づいて、2 つの VBA マクロがあり、2 つの列を比較して一致しない値を別のシートにコピーしようとしていることがわかりました。

このためには、2 つのマクロを 1 つに結合する方法が必要です。

ソース シート内の 2 つの列を比較して一致しない値を探し、そのデータを別のシートにコピーする方法を提案したいと思います。

マクロは行に色の書式を適用し、コピー後に両方の列の書式を反転します。

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 だけでなく、任意の 2 つの列を選択して比較することもできます。
  • 2 番目のマクロで、For i = 1 To 10および Sheet Nameデータ範囲の値を調整できます。A1:B10

関連情報