gpt4 book ai didi

excel - excel 2007 中的数据验证

转载 作者:行者123 更新时间:2023-12-04 22:08:54 25 4
gpt4 key购买 nike

我正在尝试限制我的 excel 工作表中某些单元格的输入,如下所示:1-7,10,12 ,这意味着只有数字 09和符号 -,可以出现在单元格中。我想以非基于 vba 的数据验证方式理想地处理它,但即使是基于 vba 的解决方案也可以。

编辑 - 有一个关键字将是一个异常(exception),“固定”,如果我看到这个词,它将被允许。

最佳答案

使用 Regex 的 VBA 版本对象:我刚刚写了函数。您可以在工作表更改事件中简单地调用此函数。 (就像悉达多的使用方式一样)。还有一件事,每次用户输入错误的字符时,该函数都会将它们全部删除:D ...然后,您需要再次注意,以确保此操作发生在您选择的特定范围内..因为否则它可以删除任何正在更改的单元格!!!鉴于悉达思在 infinite loops within this `worksheet change event 上的帖子,我已经编辑了代码以包含该位。

    Option Explicit

'-- within sheet change event
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Zoo
Application.EnableEvents = False
Call NumbersAndCommaDashOnly(Target)

GetBack:
Application.EnableEvents = True
Exit Sub
Zoo:
MsgBox Err.Description
Resume GetBack
End Sub

Function NumbersAndCommaDashOnly(ByRef rngInput As Range) As String
Dim objRegex As Object
Dim strInput As String

Set objRegex = CreateObject("VBScript.RegExp")
objRegex.IgnoreCase = True
objRegex.Global = True
objRegex.Pattern = "^[-,0-9]+$|^[Fixed]$"

If Not IsNull(rngInput.Value) Then
strInput = rngInput.Value
Else
NumbersAndCommaDash = "Empty Range"
rngInput.Value = ""
Exit Function
End If

If objRegex.Test(rngInput.Value) Then
NumbersAndCommaDash = objRegex.Replace(rngInput, "")
Else
NumbersAndCommaDash = "No numbers found"
rngInput.Value = ""
End If

End Function
  • 对于基于 Excel 公式的解决方案,您可以查看此 MSDN article .
  • 关于excel - excel 2007 中的数据验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14272464/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com