ここから本文です

★エクセルVBA 実行時間を短くしたい★ お世話になります。

cos********さん

2019/7/2214:34:21

★エクセルVBA 実行時間を短くしたい★

お世話になります。

今日もVBAについて教えてください!

★やりたいこととして、以前元々数式があったところからコピーして、値のみ張り付けしたところを空白扱いに戻す。というコードを教えてもらって、A8~A10000行までをそのコードを使用して変更後、

A8~A10000が空白だったら行ごと削除するというコードを使用しているのですが、
とても時間がかかってしまいます。

もしできたら、
・時間を省略する、
・もしくはその作業が終わるまで待機させてから、次の作業に移るというコードを教えてほしいです。前後に違うマクロが組まれています。

使用しているコードは以下です。

宜しくお願いします。

Sub 空白を消す()

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

With Range("A8:A10000")
.Formula = .Formula
End With

Dim Rw As Long
For Rw = 10000 To 8 Step -1
If Cells(Rw, 1) = "" Then Rows(Rw).Delete
Next Rw

End Sub

閲覧数:
40
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tra********さん

2019/7/2216:44:14

>With Range("A8:A10000")
9992行分のセルが対象ですが、そんなにデータは多くないのでしょう?
最終行をちゃんと求めれば、時間も短縮できませんか?


Sub 空白を消す()
Dim rng As Range, rngD As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

With Range("A8", Cells(Rows.Count, 1).End(xlUp))
.Copy
.PasteSpecial xlPasteFormulas
For Each rng In .Cells
With rng
If .Value = "" Then
If rngD Is Nothing Then
Set rngD = .Cells
Else
Set rngD = Union(rngD, .Cells)
End If
End If
End With
Next rng
End With
If Not rngD Is Nothing Then rngD.EntireRow.Delete
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub

質問した人からのコメント

2019/7/22 18:26:16

ありがとうございます!はいその通りでした(T_T)
こんなに早くできるとは思ってもみなかったので本当にうれしいです!!!!
本当にありがとうございます!

ベストアンサー以外の回答

1〜1件/1件中

chr********さん

2019/7/2216:16:50

Deleteで消せば 空白セルを選べるので
その後、1度で行を削除します
Sub 空白を消す2()
With Range("A8:A10000")
.Formula = .Formula
End With

Dim Rw As Long
For Rw = 10000 To 8 Step -1
If Cells(Rw, 1) = "" Then Cells(Rw, 1).ClearContents
Next Rw
Range("A8:A1000").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる