以下代码正常运作。它将遍历工作表中的所有列,并根据第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
答案 0 :(得分: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