- ベストアンサー
マクロの行削除の記述の仕方
1050 円(@1050YEN)の回答
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
Option Explicit Sub 消す() '可変項目 '------------------------------------------------ Dim xlsシート As Excel.Worksheet Dim str消対象列 As String Dim str消対象文字 As String Dim int消対象開始列 As Integer Set xlsシート = ThisWorkbook.Worksheets(1) str消対象列 = "AI" str消対象文字 = "k000000" int消対象開始列 = 6 '------------------------------------------------ Dim rng消す対象エリア As Range Dim col消す対象 As Collection '消す対象となる範囲を取得する Set rng消す対象エリア = 取得_消す対象エリア(xlsシート, str消対象列, int消対象開始列) If (rng消す対象エリア Is Nothing) Then Call MsgBox("データが範囲内に存在していない", vbCritical) Exit Sub End If '消す対象となるデータのセルを取得する Set col消す対象 = 取得_消す対象(rng消す対象エリア, str消対象文字) If (col消す対象.Count < 1) Then Call MsgBox("範囲内に消対象文字列が見つからない", vbCritical) Exit Sub End If '実行 Call 消す実行(xlsシート, col消す対象) Call MsgBox("終了", vbInformation) End Sub Private Sub 消す実行(p_xlsシート As Excel.Worksheet, col消す対象 As Collection) Dim strRows() As String Dim strWk As String Dim intCount As Integer Dim i As Integer intCount = col消す対象.Count If (intCount < 1) Then Exit Sub End If ReDim strRows(1 To intCount) For i = 1 To intCount strWk = col消す対象(i).Row strRows(i) = strWk & ":" & strWk Next i p_xlsシート.Range(Join(strRows, ",")).Delete End Sub Private Function 取得_消す対象(p_rang消す対象エリア As Range, p_str消対象文字 As String) As Collection Dim rngWk As Range Dim colRet As Collection '返しコレクション初期化 Set colRet = New Collection 'まず検索する Set rngWk = p_rang消す対象エリア.Find(p_str消対象文字) '見つからない場合は終了 If (rngWk Is Nothing) Then GoTo PGMEND End If 'コレクションに追加 colRet.Add rngWk Do '次を検索 Set rngWk = p_rang消す対象エリア.FindNext(rngWk) '最初に見つかったものと一緒であれば抜ける If (rngWk.Row = colRet(1).Row) Then Exit Do End If 'コレクションに追加 colRet.Add rngWk Loop PGMEND: Set 取得_消す対象 = colRet End Function Private Function 取得_消す対象エリア(p_xlsシート As Excel.Worksheet, p_str消対象列 As String, p_int消対象開始列 As Integer) As Range Dim rng最終セル As Range Dim int行 As Integer Dim int列 As Integer 'データエリアを得る int列 = p_xlsシート.Cells(1).SpecialCells(xlLastCell).Row int行 = p_xlsシート.Columns(p_str消対象列).Column '開始列まで、データがが存在していない If (int列 < p_int消対象開始列) Then Exit Function End If '対象となる範囲を返す With p_xlsシート Set 取得_消す対象エリア = .Range(.Cells(p_int消対象開始列, int行), .Cells(int列, int行)) End With End Function
関連するQ&A
- VBAマクロ抽出の記述
A列からAH列の6行目からデーターベースが入っています。 条件としてAH列6行目の欄にKという文字で F列~AC列までのデータがブランク以外のデータを抽出したい。 このマクロの記述の仕方を教えてください。
- ベストアンサー
- Visual Basic
- 行削除のマクロ
B列~F列にデータが入っていてB列の最終行の下セルを選択しクリップボードのデータを貼り付けた後、貼り付けたデータの最初の3行を削除するマクロを作っています。 Sub Macro1() ''Worksheets("Sheet1").Activate ' addrw = Range("b65536").End(xlUp).Offset(1).Row Cells(addrw, 2).PasteSpecial end sub これでB列の最終行の下にデータを貼り付けることまで出来たのですが貼り付けた最初の3行の削除の仕方がわかりません。 いい方法があれば教えていただけないでしょうか。 例えばB列の10行目まで既に入力されていた場合、11行目からクリップボードのデータを貼り付け(ここまでは上のプログラムで出来ました。)、11行目から13行目を削除したいのですがどうしたらいいでしょうか?
- ベストアンサー
- オフィス系ソフト
- 行を削除するマクロ2
a列には0から2の数値が入っています。 2行目から、a列の数値が2かつ最下の行(この画像の場合は12行目)までを削除するマクロのvbaの構文を教えてください。 ただし、a列の数値がすべて2未満の場合、行は削除しないようにしてください。 削除するのは行全体で、a列だけではありません。 エクセル2010です。 どうぞよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- excel2000マクロ記述
シート名JISEKIの中のF列には2行目から4桁のコードが入っています。 X列の2行目から数値データが入っています。 条件としてF列のコードがA310又はA505で、X列の数値がマイナスの場合は、 R列からW列の数値データを非表示にしたい。 これをマクロ化したいのですが、記述の仕方を教えてください。
- ベストアンサー
- Visual Basic
- エクセル マクロの記述をご教示下さい。
宜しくお願い致します。 ● Aファイルに下記のようなマクロを記述したい。 ・BファイルのB列の6行目から2000行に入力されている、データを 削除する。 ・出来れば、人為的にBファイルは、立ち上げない状態で削除したい。 ・マクロを実行することによって、自動的に立ち上がるのは結構です。 ・また、削除後、Bファイルは立ち上がっていても結構です。 ご指導のほど宜しく御願い申し上げます。
- ベストアンサー
- Windows XP
- 重複行削除のマクロ
重複行を削除するマクロを作っていますが、うまくいきません。 2行目にタイトルが入っていて、3行目以降が必要なデータになります。 この中でA列が一致しているデータ行を削除したいと考えており、 重複データが削除された後、タイトル行がなぜか一番下の行にはりついてしまいます。 どなたか詳しい方助けてください!!!よろしくお願いします。 ちなみに以下が現在使用しているVBAコードです。 =============================================================== Sub GoodRemoveDuplicates() 'A列にデータが入力されており、そのデータを並べ替えた後、 '重複するデータが含まれている行を削除するマクロ Worksheets("貼り付け用用マクロ").Range("A1").Sort _ key1:=Worksheets("貼り付け用用マクロ").Range("A1") Set currentCell = Worksheets("貼り付け用用マクロ").Range("A1") Do While Not IsEmpty(currentCell) Set nextCell = currentCell.Offset(1, 0) If nextCell.Value = currentCell.Value Then currentCell.EntireRow.Delete End If Set currentCell = nextCell Loop End Sub ===============================================================
- ベストアンサー
- Visual Basic
- 特定の文字がある行以外を削除するマクロ
特定の文字がある行以外を削除するマクロを作りたいです。 データの範囲はA1からK50000 E列にS01、S02、E03と書いてあるセル以外の行を削除したいです。 E列にはS01~S50、E01~E100というような数値があります。 どうぞよろしくお願いします。
- ベストアンサー
- その他MS Office製品
- アクティブになっている行をマクロで削除したい
特定の文字の入っている行とそれ以下の行全部を削除したいのですが どうしたらよいでしょうか 例えば"小計"の入っている行から下の行を削除したいのですが 行の位置はいつも違っています セルの位置は検索で分かりますし行の削除はShift+スペースで消し それより下はShift+ctrl+方向キー+delで出来るのですが それだとマクロで実行するときいつも同じ行を消してしまいます どの位置にも関係なくアクティブセルの含まれている行とそれ以下の行を マクロで削除するにはどのように記述すればいいですか
- ベストアンサー
- オフィス系ソフト
- マクロの記述について
エクセルのマクロについて教えてください。 A列には氏名B列にはコードが入っておりC列からG列に数字が入ります。 C列からG列までのすべてが0の時にその行を削除したいのです。 よろしくお願いします
- ベストアンサー
- その他MS Office製品