Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA excel特定单元格条目并添加警告消息_Vba_Excel - Fatal编程技术网

VBA excel特定单元格条目并添加警告消息

VBA excel特定单元格条目并添加警告消息,vba,excel,Vba,Excel,我有一个工作表,我正试图在其中输入新产品的详细信息 一列需要5位数字。我想让我的代码做的是,一旦输入了这个数字,如果它不是一个5位数的数字,发送一个警告消息框,要求检查工作编号 如果条目为5位数字,并且包含字母,则警告消息应适用。但是,无论输入什么,我仍然希望单元格接受输入。这是为列B编码的 在工作表代码区域中放置以下内容: Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range, r As Range,

我有一个工作表,我正试图在其中输入新产品的详细信息

一列需要5位数字。我想让我的代码做的是,一旦输入了这个数字,如果它不是一个5位数的数字,发送一个警告消息框,要求检查工作编号


如果条目为5位数字,并且包含字母,则警告消息应适用。但是,无论输入什么,我仍然希望单元格接受输入。

这是为列B编码的

在工作表代码区域中放置以下内容:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range, r As Range, s As String, L As Long
    Dim addy As String
    Set rng = Intersect(Range("B:B"), Target)
    If rng Is Nothing Then Exit Sub
    For Each r In rng
        s = r.Text
        L = Len(s)
        addy = r.Address(0, 0)
        If L <> 5 Then
            MsgBox "Please check " & addy
        Else
            For i = 1 To 5
                If Not IsNumeric(Mid(s, i, 1)) Then
                    MsgBox "Please check " & addy
                End If
            Next i
        End If
    Next r
End Sub
Private子工作表\u更改(ByVal目标作为范围)
尺寸rng作为范围,r作为范围,s作为字符串,L作为长度
像字符串一样变暗
设置rng=相交(范围(“B:B”),目标)
如果rng为空,则退出Sub
对于rng中的每个r
s=r.文本
L=Len(s)
addy=r.地址(0,0)
如果我5岁那么
MsgBox“请检查”&添加
其他的
对于i=1到5
如果不是数字(Mid(s,i,1)),则
MsgBox“请检查”&添加
如果结束
接下来我
如果结束
下一个r
端接头
由于它是工作表代码,因此安装和自动使用非常容易:

  • 在Excel窗口底部附近的选项卡名称上单击鼠标右键
  • 选择查看代码-这将打开一个VBE窗口
  • 粘贴内容并关闭VBE窗口
  • 如果您有任何顾虑,请先在试用工作表上试用

    如果保存工作簿,宏将与工作簿一起保存。 如果在2003年以后使用Excel版本,则必须保存 文件的格式为.xlsm而不是.xlsx

    要删除宏,请执行以下操作:

  • 如上所述打开VBE窗口
  • 清除代码
  • 关闭VBE窗口
  • 要了解有关宏的更多信息,请参阅:

    要了解有关事件宏(工作表代码)的详细信息,请参阅:


    必须启用宏才能工作

    在您的情况下,我将使用
    Excel数据验证

    只需将范围更改为9999到100000之间,它将是一个5位数字。也可以使用标准Excel公式验证输入

    在“数据验证”对话框中,还可以定义警报或错误尺寸


    有关更多信息:

    感谢您的帮助。我想我理解代码的意思。但是,我对下面这行有问题:Set rng=Intersect(Range(“B:B”),Target)我知道这是针对列B的,但它似乎不接受这一点。我还试着将它指向单元格,特别是它将使用7,3进行检查,表示第7行第3列,但没有运气。您能帮忙吗?谢谢Danilo Favato,您是否有办法检查同一列中是否添加了重复的数字?感谢you@LJohnstone不使用
    数据验证
    功能,但可以使用
    条件格式化
    突出显示重复项。