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

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

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 

当列中没有合并的单元格时,它运行良好。 但是,当合并单元格时,它会select合并单元格的所有列。

有没有办法根据列号一次只select一列?

如果你避免“select”,应该工作,这是一个好主意。

此外,我会build议在这里使用For-Loop,这意味着您可能必须将列数从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 

只是稍微改变了你的代码:


 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