2016-08-04 6 views
0

私はvbaで以下のコードを使用していますが、実行に時間がかかりすぎます。レポートには8枚あり、450枚以上の行を各シートでチェックする必要があります。Forループの代替コードが必要

Sub forloop() 
Application.ScreenUpdating = False 
Application.DisplayAlerts = False 
Application.Calculation = xlCalculationManual 
lr = Cells(Rows.Count, 3).End(xlUp).Row - 1 
For s = 1 To Sheets.Count 
    For x = lr To 1 Step -1 
     If Cells(x, 2) <> "" Then 
     Cells(x, 2).EntireRow.Delete 
    Next x 
Next s 
Application.ScreenUpdating = True 
Application.DisplayAlerts = True 
Application.Calculation = xlCalculationAutomatic 
End Sub 

速い実行方法を教えてください。

+1

あなたのコードは何をしていますか? ... –

+0

@TimWilliams - 必要なワークブックを開き、そのワークブックでコードを実行する必要があります –

+0

@TimWilliams - はい、最初のシートを実行し、最後のシートを実行する必要があります –

答えて

1
dim wb as workbook, sht as worksheet, lr as long, r as long 

set wb = workbook.open(wbPathHere) 

for each sht in wb.worksheets 
    lr = sht.cells(sht.rows.count, 3).End(xlUp).row - 1 
    for r = lr to 1 step-1 
     if sht.cells(r, 2) <> "" Then sht.cells(r, 2).entirerow.delete 
    next r  
next sht 
関連する問題