2016-04-13 3 views
1

私はいくつかの基本マクロを持っていますが、それぞれにループ機能を追加したいと思います。私はループのキックを開始するコードと最後のアクティブなワークシート上のループを閉じるエンディングコードを探しています。ここで単純な書式設定のためのVBAマクロループ

は、現在のコードです:

Sub MQA_Shrink() 
' 
' 
' 
For Each sht In ThisWorkbook.Worksheets 
Range("B:B,D:D,H:I,K:O").Select 
Range("K1").Activate 
Selection.Delete Shift:=xlToLeft 
ActiveWindow.ScrollColumn = 1 
Columns("B:F").Select 
Columns("B:F").EntireColumn.AutoFit 
Range("A1:F1").Select 
With Selection 
    .HorizontalAlignment = xlCenter 
    .VerticalAlignment = xlBottom 
    .Orientation = 0 
    .AddIndent = False 
    .IndentLevel = 0 
    .ShrinkToFit = False 
    .ReadingOrder = xlContext 
    .MergeCells = False 
End With 
Selection.Merge 
Next sht 

End Sub 

私はすべてのタブと最後までちょうどサイクルに、この基本的な書式のマクロたいと思います。

私はここで見たさまざまな例をマッシュアップしましたが、何も正しく循環していないようです。それらはすべてリクエスタのプロジェクトに合わせて調整されていました。何かアドバイス?

答えて

0

すべての範囲オブジェクトに正しい子孫を割り当てる必要があります。またはアクティブなシートのみを参照します。

Sub MQA_Shrink() 
Dim sht As Worksheet 
For Each sht In ThisWorkbook.Worksheets 
    sht.Range("B:B,D:D,H:I,K:O").Delete Shift:=xlToLeft 
    sht.Columns("B:F").AutoFit 
    With sht.Range("A1:F1") 
     .HorizontalAlignment = xlCenter 
     .VerticalAlignment = xlBottom 
     .Orientation = 0 
     .AddIndent = False 
     .IndentLevel = 0 
     .ShrinkToFit = False 
     .ReadingOrder = xlContext 
     .MergeCells = False 
     .Merge 
    End With 
Next sht 

End Sub 

はまた、マクロレコーダーを使用した後に1が通過し、それがコードが遅くなり、すべての.Select.Activateを削除する必要があります。 HERE

関連する問題