使用宏来设置列宽,忽略合并的单元格

时间:2016-08-29 12:58:59

标签: excel vba excel-vba

我有以下非常简单的宏来设置列的宽度,基于列号。

Sub aaa()

a = 2
lColor = RGB(191, 191, 191)

While a <= 396

    Cells(1, a).EntireColumn.Select

    If Cells(1, a).Interior.Color = lColor Then

        Selection.ColumnWidth = 0.67

    Else
        Selection.ColumnWidth = 0.25

    End If

    Cells(1, a).Select

    a = a + 1

Wend


End Sub

当列中没有合并的单元格时,它可以正常工作。但是,当存在合并的单元格时,它会选择合并单元格的所有列。

根据列号,有没有办法一次只选择一列?

2 个答案:

答案 0 :(得分:2)

如果你避免“选择”应该有效,这一般是一个好主意。

另外我建议在这里使用For-Loop,这意味着您可能需要将Column-Count从396调整到395.

For a = 1 To 395
    With Columns(a)
        If (a) Mod 7 = 0 Or (a) Mod 6 = 0 Then
            .ColumnWidth = 2
        Else
            .ColumnWidth = 0.25
        End If
    End With
Next a

答案 1 :(得分:2)

只是改变了你的代码:

Sub aaa()
Dim a As Integer
a = 2
While a <= 396
    If (a - 1) Mod 7 = 0 Or (a - 1) Mod 6 = 0 Then
        Cells(1, a).ColumnWidth = 0.67
        Else
            Cells(1, a).ColumnWidth = 0.25
    End If
    a = a + 1
Wend


End Sub