VBA宏循环用于简单格式化

时间:2016-04-13 17:10:32

标签: excel-vba loops vba excel

我有一些基本的宏,但我想为每个宏添加一个循环函数。我正在寻找启动循环的起始代码和结束代码以关闭最后一个活动工作表上的循环。

以下是当前代码:

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

我就像这个基本的格式化宏来循环浏览所有标签并结束。

我已经捣毁了我在这里看到的不同例子,但似乎没有任何东西可以正常循环。它们都是专门针对请求者的项目量身定制的。有什么建议吗?

1 个答案:

答案 0 :(得分: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

使用宏录制器之后,应该通过并删除所有.Select.Activate,这会降低代码速度。见HERE