Excel精英培训网

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

[已解决]用VBA判断字符串是否符合设定的格式

[复制链接]
发表于 2023-4-15 09:52 | 显示全部楼层 |阅读模式
求教大佬:

就是我们的配方表中,H列是原料报送码,格式是000000-00000-0000,即分别是   6位数字-5位数字-4位数字,
H列中,可能有报送码,也可能是空值,
如果有报送码,则需要检查其格式是否正确,比如,是不是多出空格,少了位数,混入字母等等
如果报送码错误,则msgbox出来提醒,详情请阅附件
最佳答案
2023-4-15 10:59
Sub 判断格式并提示()
Dim i As Long
For i = 3 To Range("H" & Rows.Count).End(xlUp).Row
  
    If Not Range("H" & i).Text Like "######-#####-####" And Range("H" & i) <> "" Then '将格式替换为您的格式
        MsgBox Range("B" & i) & "原料报送码为 " & Range("H" & i) & "第" & i & " 行的H列格式错误"
   
   
    End If
Next i
End Sub
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2023-4-15 09:55 | 显示全部楼层
怎么最近经常登录不了,刚才很久都没上传好
诉求.jpg

判断字符串是否符合设定的格式.zip

17.28 KB, 下载次数: 2

回复

使用道具 举报

发表于 2023-4-15 10:59 | 显示全部楼层    本楼为最佳答案   
Sub 判断格式并提示()
Dim i As Long
For i = 3 To Range("H" & Rows.Count).End(xlUp).Row
  
    If Not Range("H" & i).Text Like "######-#####-####" And Range("H" & i) <> "" Then '将格式替换为您的格式
        MsgBox Range("B" & i) & "原料报送码为 " & Range("H" & i) & "第" & i & " 行的H列格式错误"
   
   
    End If
Next i
End Sub

评分

参与人数 1学分 +2 收起 理由
山海风云轩 + 2 学习了

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2023-4-15 12:23 | 显示全部楼层
没名没姓 发表于 2023-4-15 10:59
Sub 判断格式并提示()
Dim i As Long
For i = 3 To Range("H" & Rows.Count).End(xlUp).Row

感谢大佬,比我自己做的简洁多了,非常感谢
报送码.jpg
回复

使用道具 举报

 楼主| 发表于 2023-4-15 12:58 | 显示全部楼层
没名没姓 发表于 2023-4-15 10:59
Sub 判断格式并提示()
Dim i As Long
For i = 3 To Range("H" & Rows.Count).End(xlUp).Row

对了,请教大佬,一个一个msgbox出来有点繁琐,请问怎么样可以最后的时候,一起msgbox出来了?
回复

使用道具 举报

 楼主| 发表于 2023-4-15 14:46 | 显示全部楼层
请问,有接单做VBA代工的吗?
回复

使用道具 举报

发表于 2023-4-15 21:38 | 显示全部楼层
Sub 判断格式并提示()
    Dim i As Long
    For i = 3 To Range("H" & Rows.Count).End(xlUp).Row
        If Not Range("H" & i).Text Like "######-#####-####" And Range("H" & i) <> "" Then
            Range("H" & i).Interior.Color = RGB(255, 0, 0)
            'MsgBox Range("B" & i) & "原料报送码为 " & Range("H" & i) & "第" & i & " 行的H列格式错误"
        End If
    Next i
End Sub
有格式问题的设置颜色提醒也行。
回复

使用道具 举报

发表于 2023-4-15 21:51 | 显示全部楼层
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim i As Long
    For i = 3 To Range("H" & Rows.Count).End(xlUp).Row
        If Not Range("H" & i).Text Like "######-#####-####" And Range("H" & i) <> "" Then
            Range("H" & i).Interior.Color = RGB(255, 0, 0)
           
            Else
            Range("H" & i).Interior.Color = RGB(255, 255, 255)
        End If
    Next i
End Sub
------------------------
也可以用这个把代码放在对应的工作表代码中。单元格有问题会红色提醒,修改对了格式自己会设置为白色
回复

使用道具 举报

 楼主| 发表于 2023-4-15 23:21 | 显示全部楼层
没名没姓 发表于 2023-4-15 21:51
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim i As Long
    For i = 3 To Ra ...

感谢大佬的讲解,
这VBA有点容易上瘾啊,现在又想到一个提升工作效率的点,
就是将前面做好的表格中的某些内容,复制粘贴到新建的excel工作薄中,用于提交系统,避免手动复制辛苦
详见附件

欢迎各位大佬指点
复制内容到新表诉求.jpg

去屑洗发水-模拟配方.zip

19.48 KB, 下载次数: 1

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 01:10 , Processed in 0.367178 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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