[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『行削除について』(hirotaka)
下記のように、コピペのマクロはできています、この後「成績 大中小の小中のみ」のシートの行削除を一気に処理したいと思いネットや皆さんの協力をもらって作成しました。しかし、処理すると固まってしまい、Excelが動かなくなります。どこがおかしいのか教えて頂けませんか。
Sub コピペする()
'Sheet1のA3から最終行までをコピー
With Sheets("成績順")
.Range("A3:J" & .Cells(Rows.Count, "A").End(xlUp).Row).Copy
End With
'Sheet2のA列の最終行の次の行に貼付け
Sheets("成績 大中小の小中のみ").Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial
Application.CutCopyMode = False
End Sub
Sub 条件に一致した行を削除する()
Dim i As Long
With Worksheets("成績 大中小の小中のみ")
For i = .Range("A1").End(xlDown).Row To 2 Step -1
With .Cells(i, "J")
If _
.Value Like "大*" Then
.EntireRow.Delete
End If
End With
Next i
End With
End Sub
< 使用 Excel:Excel2013、使用 OS:Windows10 >
10分しても処理がおわりません。すみません、やり方がおかしいのでしょうか。
お教えくださいませんでしょうか。
Sub 条件に一致した行を削除する()
Dim i As Long
With Worksheets("成績 大中小の小中のみ")
For i = .Range("A1").End(xlDown).Row To 2 Step -1
With .Cells(i, "J")
If _
.Value Like "大*" Then
.EntireRow.Delete
DoEvents
End If
End With
Next i
End With
End Sub
(hirotaka) 2022/01/21(金) 10:35
どの程度のデータがあって、どの程度削除するのでしょうか?
(tkit) 2022/01/21(金) 10:40
1300件ほどです。
>移動再計算を止める。
すみません、これはどういうことですか、どのように修正したらとめられますか。
(hirotaka) 2022/01/21(金) 11:03
Sub 指定文字行削除()
Dim LastRow As Long
Dim i As Long
With Worksheets("成績 大中小の小中のみ")
'最終行取得 LastRow = Cells(Rows.Count, 1).End(xlUp).Row
With ActiveSheet
'最終行から先頭へループ For i = LastRow To 1 Step -1
'特定文字があったら行削除 If InStr(Cells(i, 10), "大") >= 1 Then .Rows(i).Delete End If Next End With End With
End Sub
(hirotaka) 2022/01/21(金) 12:48
一括削除です。
Sub sample() Dim searchRange As Range With Worksheets("成績 大中小の小中のみ") Set searchRange = Range("J2").Resize(.Range("A1").End(xlDown).Row - 1, 1) End With
Dim deleteArea As Range Dim r As Range For Each r In searchRange If r.Value Like "大*" Then If deleteArea Is Nothing Then Set deleteArea = r Else Set deleteArea = Union(deleteArea, r) End If End If Next
For Each r In deleteArea.Areas r.EntireRow.Delete Next End Sub
(tkit) 2022/01/21(金) 12:55
https://www.google.com/search?q=VBA+%E9%AB%98%E9%80%9F%E5%8C%96
(ひまつぶし) 2022/01/21(金) 12:59
■1
>処理すると固まってしまい〜
とりあえず【ステップ実行】して何行目の処理をしているときに問題が生じているのか検証してみてはどうでしょうか?
■2
こだわりがなければ【インデント】を設定されたほうがよいとおもいます。
マクロの実行に影響がでるものではありませんが、適切なインデントを設定することでコードの構造が把握しやすくなり、ご自身のデバッグ作業の効率アップに寄与すると思います。
■3
削除のほうについて、1行ずつ判定と削除を繰り返しているわけですが、対象のセル(行)をおぼえておいて、覚えておいたセル(行)を一括削除という手もあろうかとおもいます。
■4
上記を踏まえると、例えば↓のような感じでも良いようにおもいます。
Sub コピペする_改() With Sheets("成績順") .Range("A3:J" & .Cells(Rows.Count, "A").End(xlUp).Row).Copy _ Sheets("成績 大中小の小中のみ").Cells(.Rows.Count, "A").End(xlUp).Offset(1) End With End Sub '--------------------------------------------------- Sub 条件に一致した行を削除する_改() Dim i As Long, bufRNG As Range
Stop 'ブレークポイントの代わり
With Worksheets("成績 大中小の小中のみ") For i = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row If .Cells(i, "J").Value Like "大*" Then If bufRNG Is Nothing Then Set bufRNG = .Cells(i, "J") Else Set bufRNG = Union(bufRNG, .Cells(i, "J")) End If End If Next i End With
If Not bufRNG Is Nothing Then bufRNG.EntireRow.Delete End If End Sub
(もこな2 ) 2022/01/21(金) 13:02
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.