EXCEL:如何在通过列循环来更改数字格式时忽略几个标题行?

下面的代码正在工作。 它将通过表单中的所有列进行处理,并根据第二行中的数字将其中的数据更改为固定长度的数字。

我的问题是,这样做时,它会select整个列。 这是我的问题,因为我有4个标题行,我不想转换。

我的第一个想法是抵消/调整select和应用所有细胞的变化,但我只是没有这样做的运气。

任何人都可以修改此代码,以忽略前4个标题行,因为它通过列?

注意:lastCol是一个单独的函数,它只返回一个整数值和表单上最后一个使用的列号。

Sub FormatFixedNumber() Dim i As Long Application.ScreenUpdating = False For i = 1 To lastCol 'replace 10 by the index of the last column of your spreadsheet With Columns(i) .NumberFormat = String(.Cells(2, 1), "0") 'number length is in second row End With Next i Application.ScreenUpdating = True End Sub 

这应该做到这一点。 我添加了一个常量来保存标题行数。

编辑:添加代码,只要按照要求去最后一行。 还检查LastRow是否大于HEADER_ROWS。 并修正resize/偏移HEADER_ROWS一些复杂的加减。

 Sub FormatFixedNumber() Const HEADER_ROWS As Long = 4 Dim i As Long Dim LastRow As Long Application.ScreenUpdating = False For i = 1 To LastCol 'replace 10 by the index of the last column of your spreadsheet With Columns(i) LastRow = .Cells(Rows.Count).End(xlUp).Row If LastRow > HEADER_ROWS Then With .Resize(LastRow - HEADER_ROWS).Offset(HEADER_ROWS) .NumberFormat = String(.EntireColumn.Cells(2, 1), "0") 'number length is in second row End With End If End With Next i Application.ScreenUpdating = True End Sub