トップ > 汎用コード > 特定データの下(右)に行(列)を挿入

特定データの下(右)に行(列)を挿入2021.04.06

シート内から特定のデータを検索し、該当セルの下に一行挿入(または右に一列挿入)するマクロです。
下図はマクロ実行例です。
「りんご」と「リンゴ」をアクティブシートから検索し、一致セルの下に一行が挿入されます。



【お薦め】マクロ・プロシージャを管理する無料のツール!
 Excelマクロ管理ツール

サンプルコード2021.04.06

コードの貼り付け場所

Sub Insert_RCs_BasedOnData() '対象:アクティブシート
    Dim varArray   As Variant
    Dim v          As Variant
    Dim strAddress As String
    Dim rngFnd     As Range
    Dim rngUni     As Range
    
    varArray = Array("りんご", "リンゴ") '検索文字列
    
    For Each v In varArray
        Set rngFnd = Cells.Find(What:=v,  _
                                LookIn:=xlValues,  _
                                LookAt:=xlPart,  _
                                SearchOrder:=xlByRows,  _
                                MatchCase:=False,  _
                                MatchByte:=False) '検索 1周目「りんご」2周目「リンゴ」
        If Not rngFnd Is Nothing Then   '
            strAddress = rngFnd.Address '最初に検索一致したセルの番地格納
            If rngUni Is Nothing Then Set rngUni = rngFnd
            Do
                Set rngUni = Union(rngUni, rngFnd)  'セルを集合
                Set rngFnd = Cells.FindNext(rngFnd) '次の一致セルを検索
            Loop Until strAddress = rngFnd.Address  'セルのアドレスが一致したらループを抜ける
        End If
    Next
    
    If Not rngUni Is Nothing Then
        With rngUni
            If MsgBox("行挿入:はい 列挿入:いいえ", vbYesNo, "行を挿入しますか?") = vbYes Then
                Union(.Offset(1), .Offset(1)).EntireRow.Insert '行の挿入
            Else
                Union(.Offset(, 1), .Offset(, 1)).EntireColumn.Insert '列の挿入
            End If
        End With
    End If
End Sub

「検索文字列」
 検索する文字列です。検索文字列の追加は、次の例を参考にしてください。
 例:Array("りんご", "リンゴ") → Array("りんご", "リンゴ", "みかん", "ぶどう")

「LookAt:=xlPart
 検索文字列が、セル内のデータに含まれる場合も一致判定となります。
 【例】検索文字列:りんご セル内データ:青りんご → 一致判定
 セルと完全一致のみを一致とする場合:xlPart → xlWhole

「Union(rngUni.Offset(1), rngUni.Offset(1)).EntireRow.Insert」
 Unionメソッドは、行が重複して選択された際、適切な形の選択に変更するために用いています。



ページトップへ戻る

Excel 汎用コード

Copyright(C) 2009- 坂江 保 All Rights Reserved.