1

下面的代码正在运行。它将遍历工作表中的所有列,并根据第 2 行中找到的数字将其中的数据更改为固定长度的数字。

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

我的第一个想法是偏移/调整选择的大小并将更改应用于所有单元格,但我只是没有运气这样做。

任何人都可以修改此代码以在列中前进时忽略前 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
4

1 回答 1

0

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

编辑:添加代码以按要求转到最后一行。还检查 LastRow 是否大于 HEADER_ROWS。并修复了调整大小/偏移中 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
于 2012-04-04T03:34:14.647 回答