|
8#
楼主 |
发表于 2016-3-27 13:06:37
|
只看该作者
本帖最后由 roych 于 2016-3-27 13:10 编辑
貌似Excel 2013里直接用公式(自定义)好像有点问题,例如在编辑状态下按enter就会出现这个问题:
如果把公式写入一个单元格,然后引用该单元格作为数据验证倒是可以的(详见附件)。不知道算不算一个bug。
我想到的是将输入的字符串mid到每个单元格,然后加上三个辅助列(字母,数字,特殊字符)分别来find这些单元格,最后组合起来判断。从理论上讲应该是可行的,不过数组公式可能比较复杂。
当然,VBA相对简单些:
- Function Invalid(ByVal rngInput As Range) As Boolean
- Dim i As Long
- Dim blnResult As Boolean
- 'Const NUMBER_TEST As String = "0123456789"
- Const CHAR_TEST As String = "qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM"
- Const SYMBOL_TEST As String = "~!@#$%^&*()"
- '先判断开头字母
- If InStr(1, CHAR_TEST, Left(rngInput.Value, 1)) Then
- '判断是否包含数字
- If rngInput.Value Like "*#*" Then
- '然后判断是否包含特殊字符,一次循环搞定。
- For i = 2 To Len(rngInput.Value)
- If InStr(1, SYMBOL_TEST, Mid(rngInput.Value, i, 1)) Then
- blnResult = True
- Exit For
- End If
- Next
- End If
- End If
- Invalid = blnResult
- End Function
复制代码 不过同样需要用别的单元格来存储,不能定义名称,然后在有效性里使用:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|