You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何制作仅接受含3个数字、1个B和1个?的7位编码的VBA输入框

VBA带规则校验的密码输入框实现方案

以下是适配你需求的完整可运行代码,解决了你卡壳的3个数字统计问题,同时补充了所有要求的校验规则:

Sub btn_CheckCode2()
    Dim code As String
    ' 首次弹出输入框
    code = InputBox("请输入校验码")
    
    ' 循环校验,直到符合要求或者用户取消
    Do While Not CheckCodeValid(code)
        ' 用户点取消返回空的话直接退出
        If code = "" Then
            MsgBox "已取消输入"
            Exit Sub
        End If
        code = InputBox("输入不符合规则,请重新输入:" & vbCrLf & "规则:7位字符,包含3个数字、1个大写B、1个英文问号?")
    Loop
    
    MsgBox ("输入成功,您输入的内容是:" & code)
End Sub

' 单独封装校验逻辑,返回是否符合规则
Function CheckCodeValid(code As String) As Boolean
    ' 先校验长度是否为7位
    If Len(code) <> 7 Then
        CheckCodeValid = False
        Exit Function
    End If
    
    Dim numCount As Integer, i As Integer
    numCount = 0
    ' 遍历每个字符统计数字个数
    For i = 1 To Len(code)
        If IsNumeric(Mid(code, i, 1)) Then
            numCount = numCount + 1
        End If
    Next
    ' 校验数字个数是否为3
    If numCount <> 3 Then
        CheckCodeValid = False
        Exit Function
    End If
    
    ' 校验是否包含大写B(InStr默认区分大小写,符合要求)
    If InStr(code, "B") = 0 Then
        CheckCodeValid = False
        Exit Function
    End If
    
    ' 校验是否包含英文问号
    If InStr(code, "?") = 0 Then
        CheckCodeValid = False
        Exit Function
    End If
    
    ' 所有规则都符合
    CheckCodeValid = True
End Function

核心逻辑说明

  • 你卡壳的3个数字校验通过For循环遍历输入字符串的每一位字符实现,用IsNumeric判断当前字符是否为数字,累加计数后判断总计数是否等于3即可,不会限制数字的出现位置,符合通用校验需求。
  • 特殊字符校验用VBA内置的InStr函数实现,默认区分大小写刚好满足必须是大写B的要求,不需要额外做大小写转换。
  • 把校验规则单独封装为函数,后续如果要调整规则只需要修改CheckCodeValid里的逻辑即可,主循环代码更简洁,也修复了原代码里输入框弹出位置错误、可能出现死循环的问题。
  • 增加了用户点击输入框取消按钮的退出逻辑,不会一直强制弹出输入框。

内容的提问来源于stack exchange,提问作者WanderingCoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 20:45:03