Excel VBA 選択セルの色と同色のセルが含まれるデータを別シートに抽出する

スポンサーリンク

選択セルの色と同色のセルが含まれるデータを別シートに抽出する方法

データ範囲の値に目印のためセルに背景色を付けてデータを管理している場合があると思います。


以下の例の選択セルと同色のセルをデータ範囲に抽出する方法は、「こちら」をご覧ください。


ここでは、選択セルの色と同色のセルが含まれるデータを追加した別シートに抽出する方法について解説します。

実行結果

コードと解説

Sub 別シート色抽出()
Dim 色 As Long
Dim 範囲 As Range
Dim セル As Range
On Error GoTo エラー処理
Set セル = Application.InputBox("抽出するセルの色と同じセルの色の単体セルを選択してください。", Type:=8)
  色 = セル.Interior.Color
  Range("A1").CurrentRegion.Select
Set 範囲 = Selection.Offset(1).Resize(Selection.Rows.Count - 1)
If 色 = 0 Then
  MsgBox "セル範囲ではなく単体のセルを選択してください。"
Exit Sub
End If
  範囲.EntireRow.Hidden = True
For Each セル In 範囲
 If セル.Interior.Color = 色 Then
セル.EntireRow.Hidden = False
 End If
Next
  Selection.SpecialCells(xlCellTypeVisible).Select
  Selection.Copy
  範囲.EntireRow.Hidden = False
  Sheets.Add(After:=Sheets(1)).Name = "抽出"
  ActiveSheet.Paste Range("A1")
  Application.CutCopyMode = False
  エラー処理:
End Sub
1~19行目までのコードの解説は、「選択したセルの色と同じ色のセルが含まれるデータを抽出する」をご覧ください。


20行目【Selection.SpecialCells(xlCellTypeVisible).Select】
19行目までのコードで、データ範囲に選択したセルの色が含まれているデータが、シートに表示されている状態になっていて、データ範囲が選択状態になっています。つまり、対象データ以外は非表示になっています。(非表示のデータも選択状態)

Application【アプリケーション】オブジェクトのSelection【セレクション】プロパティを使用して、現在選択されている範囲をRange【レンジ】オブジェクトとして取得し、Range【レンジ】オブジェクトの指定した条件のセルを参照するSpecialCells【スペシャルセルズ】メソッドを使用して、参照するセルの条件を指定する引数Type【タイプ】に「可視セル」(表示されているセル)を表す定数を指定して、「可視セル」をRange【レンジ】オブジェクトのSelect【セレクト】メソッドを使用して選択します。


21行目【Selection.Copy】
Application【アプリケーション】オブジェクトのSelection【セレクション】プロパティを使用して、現在選択されている範囲(データ範囲の可視セル)、つまり選択したセルの色と同じセルの色が含まれるデータのRange【レンジ】オブジェクトを取得して、Range【レンジ】オブジェクトのCopy【コピー】メソッドを使用して、「可視セル」をコピーして「クリップボード」に保管します。


22行目【範囲.EntireRow.Hidden = False】
1行目の項目行を除いた、すべてのデータ範囲が格納されている、オブジェクト変数「範囲」にEntireRow【エンタイヤロウ】プロパティを使用して、すべての行を表すRange【レンジ】オブジェクトを参照し、セルの表示と非表示を設定するRange【レンジ】オブジェクトのHidden【ヒデン】プロパティに表示を表すFalseを指定して、非表示になっていた選択された色と同じ色のセルが無いデータを表示します。つまりデータ範囲の非表示行をすべて表示します。


23行目【Sheets.Add(After:=Sheets(1)).Name = “抽出”】
Sheets【シーツ】コレクションのAdd【アド】メソッドを使用してシートを追加しWorksheet【ワークシート】オブジェクトのName【ネーム】プロパティを使用して追加したシートに名前を付けます。


24行目【ActiveSheet.Paste Range(“A1”)】
Worksheet【ワークシート】オブジェクトのクリップボードに保管されているデータを貼り付けるPaste【ペースト】メソッドを使用し、貼り付け先のセルを表す引数Destination【ディスティネーション】にはA1セルを指定します。追加したシートがアクティブになります。


25行目 【Application.CutCopyMode = False】
Application【アプリケーション】オブジェクトのコピーモードの解除を設定するCutCopyMode 【カットコピー】モードにFalseを設定してコピーモードになっているコピー元のコピーモードを解除します。


以上で、選択セルの色と同色のセルが含まれるデータを別シートに抽出する方法についての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告