提问人:mkarthik 提问时间:7/28/2023 最后编辑:Communitymkarthik 更新时间:11/13/2023 访问量:108
检查单元格是否填充了 10 位数字
Check if a cell is filled with 10 digit number
问:
我正在向Excel中的特定单元格添加一个10位数字。
如果为 true,我想运行一个宏。 如果为 false,则为带有文本的 msgbox。
Sub Run_PNR()
If Cells(E, 7).Value = 0 Then
MsgBox ("Enter Correct PNR Number")
Else
Shell "explorer.exe " & Range("d25").Text
End If
End Sub
答:
2赞
FunThomas
7/28/2023
#1
使用该函数将单元格内容转换为数字并检查其值:Val
Dim cellVal as Long
cellVal = Val(ActiveSheet.Cells(7, "E").Value)
If cellVal < 1000000000 Or cellVal > 9999999999 Then
MsgBox ("Enter Correct PNR Number")
Else
(do whatever needs to be done...)
End If
评论
0赞
Notus_Panda
7/28/2023
不应该是'Cells(7,“E”)'吗?否则,我得到的类型不匹配。
1赞
FunThomas
7/28/2023
@Notus_Panda你是对的。与我的习惯相反,只是来自 OP 的 C&P 代码而不进行检查。
0赞
Sam
7/28/2023
这不能处理0000000001。
0赞
FunThomas
7/28/2023
@Sam:0000000001 不是数字(它要么是字符串,要么是具有特殊格式的数字 1)。但这是主要问题:OP没有说出他们到底拥有哪些数据。
1赞
FunThomas
7/28/2023
"0000000001"
显然不是一个数字(你认为引号代表什么?它是一个字符串,占用 10 个字节的内存。如果您在 Excel 中输入 000000001,它会将其转换为数字 1。如果要作为字符串,则需要放置单引号字符或将单元格格式化为文本。在这两种情况下都会返回.000000001
Vartype
vbString
1赞
senthilkumar2185
7/28/2023
#2
此代码用于字母和数字。
Sub Run_PNR()
If Len(Range("E7").value) <> 10 Then
MsgBox ("Enter Correct PNR Number")
Else
Shell "explorer.exe " & Range("d25").Text
End If
End Sub
此代码仅用于数字。
If IsNumeric(ActiveSheet.Range("E7").value) Then
If Len(ActiveSheet.Range("E7").value) <> 10 Then
MsgBox ("Enter Correct PNR Number")
Else
Shell "explorer.exe " & Range("d25").Text
End If
Else
MsgBox ("Enter Number only")
End If
End Sub
评论
1赞
FunThomas
7/28/2023
这也将接受非数字值
0赞
senthilkumar2185
7/28/2023
是的,它接受这一点,将来他们可能也想添加字母数字的帮助。
0赞
CLR
7/28/2023
这将允许输入“3.14159265”。
0赞
senthilkumar2185
7/28/2023
不允许其只允许整数。
0赞
CLR
7/28/2023
3.14159265
虽然是数字。我是说你的代码会允许它,不应该允许它。
0赞
taller
7/28/2023
#3
RegExp
是验证 10 位数字的选项。
Sub Run_PNR()
With CreateObject("vbscript.regexp")
.IgnoreCase = True
.Global = True
.Pattern = "\d{10}"
If .Test(Trim(Cells(7, "E").Value)) Then
Shell "explorer.exe " & Range("d25").Text
Else
MsgBox ("Enter Correct PNR Number")
End If
End With
End Sub
评论
Range("E7")
Range("E7").Value Like String(10, "#")