gpt4 book ai didi

regex - Excel 2010 VBA "Invalid Procedure Call or Argument"正则表达式函数中的错误

转载 作者:行者123 更新时间:2023-12-03 01:09:20 25 4
gpt4 key购买 nike

我正在 Excel 2010 中使用以下 RegEx 函数,但在该函数的最后一行收到“无效的过程调用或参数”错误。我用 ActiveCell.Value 替换了常量(已注释掉)。尽管单元格值不能正常工作,但常量确实可以正常工作。
是什么原因导致此错误发生?
我很感激这方面的任何帮助。谢谢。

Sub SUB1()
Dim c As Variant
For Each c In Worksheets("Sheet1").Range("A1:D10").Cells
'MsgBox (c)
If RE6(c.Value) Then
c.Interior.ColorIndex = 7
Else
c.Interior.ColorIndex = 6
End If
Next
End Sub


Sub Test()
'Const strTest As String = "qwerty123456uiops"
Dim strTest As String
strTest = ActiveCell.Value
MsgBox RE6(strTest)
End Sub


Function RE6(strData As String) As String
Dim RE As Object
Dim REMatches As Object
Set RE = CreateObject("vbscript.regexp")
With RE
.MultiLine = False
.Global = False
.IgnoreCase = True
.Pattern = "[0-9][0-9][0-9][0-9][0-9][0-9]"
End With

Set REMatches = RE.Execute(strData)
MsgBox ("REMatches.Count" & REMatches.Count)
'If Not REMatches Is Nothing Then
If REMatches.Count <= 0 Then
RE6 = ""
Else
RE6 = REMatches(0)
End If
'Else

'End If


End Function

最佳答案

很可能没有匹配:如果您测试 REMatches 的 .Count 属性,它是否为零?

您的函数应该对此进行测试并返回一个合适的值(可能是空字符串)。

编辑:如果您只想检查模式是否存在,那么使用 .Test() 比使用 .Execute( )。我更改了您的函数以返回 bool 值,这在这种情况下更自然。

Sub CheckCellValues()
Dim c As Range
For Each c In Worksheets("Sheet1").Range("A1:D10").Cells
If RE6(c.Value) Then
c.Interior.ColorIndex = 7
Else
c.Interior.ColorIndex = 6
End If
Next
End Sub

Function RE6(strData As String) As Boolean
Dim RE As Object
Dim REMatches As Object
Set RE = CreateObject("vbscript.regexp")
With RE
.MultiLine = False
.Global = False
.IgnoreCase = True
.Pattern = "[0-9][0-9][0-9][0-9][0-9][0-9]"
End With
RE6 = RE.Test(strData) 'much simpler...
'or...
'REMatches = RE.Execute(strData)
'RE6 = (REMatches.Count > 0)
End Function

关于regex - Excel 2010 VBA "Invalid Procedure Call or Argument"正则表达式函数中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9911603/

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