Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1068|回复: 6

[已解决]自订函数问题(不足四位,前面固定补零)

[复制链接]
发表于 2022-6-10 15:48 | 显示全部楼层 |阅读模式
本帖最后由 lkk0063 于 2022-6-13 13:24 编辑

是否有什么方法能用VBA方式使 out 内的"BU栏位"前面固定补零
EX:
输入6, 自动显示0006(前面补零)
输入65, 自动显示0065(前面补零)
输入265, 自动显示0265(前面补零)
输入1265, 自动显示1265


1.jpg
最佳答案
2022-6-10 16:10
本帖最后由 hasyh2008 于 2022-6-10 16:27 编辑

Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
        If .Column = 73 And .Row > 5 And .Count = 1 Then
            .Value = "'" & Application.Text(Target, "0000")
        End If
    End With
End Sub

test.zip

21.18 KB, 下载次数: 4

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2022-6-10 16:10 | 显示全部楼层    本楼为最佳答案   
本帖最后由 hasyh2008 于 2022-6-10 16:27 编辑

Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
        If .Column = 73 And .Row > 5 And .Count = 1 Then
            .Value = "'" & Application.Text(Target, "0000")
        End If
    End With
End Sub

单元格格式设置(20220610).rar

22 KB, 下载次数: 2

回复

使用道具 举报

发表于 2022-6-10 18:06 | 显示全部楼层
hasyh2008 发表于 2022-6-10 16:10
Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
        If .Column = 73 And .R ...

Application.Text(
绕路了,

Vba自带:
format(


评分

参与人数 1学分 +1 收起 理由
lkk0063 + 1 我和小伙伴都惊呆了

查看全部评分

回复

使用道具 举报

发表于 2022-6-10 18:25 | 显示全部楼层
砂海 发表于 2022-6-10 18:06
Application.Text(
绕路了,

OK,谢谢指正!
回复

使用道具 举报

发表于 2022-6-10 20:46 | 显示全部楼层
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. On Error Resume Next
  3. Application.EnableEvents = False
  4. If Target.Column <> 73 And Target.Row < 6 Then GoTo 100
  5. Target.Value = Format(Target.Value, "0000")
  6. 100:
  7. Application.EnableEvents = True
  8. End Sub
复制代码


test.zip

24.14 KB, 下载次数: 1

评分

参与人数 1学分 +1 收起 理由
lkk0063 + 1 学习了

查看全部评分

回复

使用道具 举报

发表于 2022-6-10 21:45 | 显示全部楼层
本帖最后由 hasyh2008 于 2022-6-11 08:11 编辑

Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
        If .Column = 73 And .Row > 5 Then
            .NumberFormatLocal = "0000"
        End If
    End With
End Sub

NumberFormatLocal,还是数值;用"'" & application.text(target.value,“0000"),则改为文本格式。用"'" & Vba.format(target.value,“0000")前面也要加"'"。
回复

使用道具 举报

发表于 2022-6-11 12:34 | 显示全部楼层
本帖最后由 hasyh2008 于 2022-6-11 12:41 编辑
砂海 发表于 2022-6-10 18:06
Application.Text(
绕路了,

VBA函数确实比工作表函数快些

Sub 工作表函数()
    Dim Rc As Long, T
    T = Timer
    With ActiveSheet
        For Rc = 1 To 10000
            .Cells(Rc, 1).Value = "'" & Application.Text(.Cells(Rc, 1), "0000")
        Next Rc
        .Cells(Rows.Count, 3).End(xlUp).Offset(1) = VBA.Format(Timer - T, "0.0000")

    End With
End Sub


Sub VBA函数()
    Dim Rc As Long, T
    T = Timer
    With ActiveSheet
        For Rc = 1 To 10000
            .Cells(Rc, 1).Value = "'" & VBA.Format(.Cells(Rc, 1), "0000")
        Next Rc
        .Cells(Rows.Count, 4).End(xlUp).Offset(1) = VBA.Format(Timer - T, "0.0000")
    End With
End Sub

2022-06-11_123924.jpg

用时测试.rar

258.66 KB, 下载次数: 8

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-4 18:26 , Processed in 0.412668 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表