首页 > 解决方案 > 如果单元格为 5 长,则添加 0 前缀,否则保持原样,循环

问题描述

我们有必须审查的序列号,其中一些是 5 位长,但在数据库中有一个 0 前缀,当然它们没有我们收到的格式。因此,使用其他 VBA 的点点滴滴,我得到了以下内容,它循环并没有改变任何内容。

我错过了什么/做错了什么?

Sub SNoReview()

    Dim METER                   As String
    Dim SQL_STRING              As String
    Dim ANSWER                  As String
    Dim CELLADDRESS             As Variant


    Application.ScreenUpdating = True
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False


    Sheets("Sheet1").Activate
    Range("N6").Select

    Do Until IsEmpty(ActiveCell)

        CELLADDRESS = ActiveCell.Address
        METER = ActiveCell.Value

        If Len(METER) = 5 Then
            METER = "0" & (METER)
        Else: METER = (METER)
        End If

        ActiveCell.Offset(1, 0).Select

    Loop

End Sub

标签: excelvbaloops

解决方案


似乎您可以一次将单个数字格式应用于整个范围。无需在这里循环。

Sub sNoReview()

    Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
    ws.Range("N6:N" & ws.Range("N" & ws.Rows.Count).End(xlUp).Row).NumberFormat = "000000"

End Sub

这不会改变任何 LEN > 6 的数字的格式

000001 From 1
000011 From 11
000111 From 111
001111 From 1111
011111 From 11111
111111 From 111111

你的代码

您的宏不起作用的原因是您从未更改过格式。excel 的默认设置是删除前导 0,因此您的代码添加它们只是为了让它们在之后被 excel 删除。肯定的时刻。


推荐阅读