0

こんにちは、以下の正規表現コードを機能させるために問題が発生しています。application-undefine または Object-Undefine エラーが発生します

テキストボックスはユーザーフォームにあります。

「Set allMatches = regEx.Execute(TextBox1.Text)」という行でエラーが発生しています。何が見逃したのかわかりません。

Dim regEx As Object

Dim allMatches As Object

Set regEx = CreateObject("VBScript.RegExp")
With regEx
        .IgnoreCase = True
        .MultiLine = False
        .Pattern = "\d{2,2}/\d{2,2}/\d{4,4} \d{2,2}:\d{2,2)[AM|PM]"
        .Global = True
End With

Set allMatches = regEx.Execute(TextBox1.Text)


If allMatches.Count <> 0 Then
    result = allMatches.Item(0).submatches.Item(0)
End If
4

3 に答える 3

1

グーグルで調べた後、私は問題を見つけました:それはパターンにあります:

 .pattern = "\d{2,2}/\d{2,2}/\d{4,4} \d{2,2}:\d{2,2**)** [AM|PM]"

パターンが有効でない場合、5017 エラーが発生することがわかります。

「)」を適切な終了「}」に変更することで、エラーは解決されました。

 .pattern = "\d{2,2}/\d{2,2}/\d{4,4} \d{2,2}:\d{2,2**}** [AM|PM]"

パターンが一致しない場合は、偽のリターンが返されると思っていましたが、そうではありません..

于 2013-08-21T01:19:14.710 に答える
0

そのため、Textbox に誤ってアクセスしている可能性があります。テキストボックスの設定方法を知らなくても、形状コレクションに保持されていると推測します。テキストボックスを探して、以下のように allMatches を設定できます

Dim shp As Shape
'loop through the shapes on the sheet - assuming you are working with sheet 1
For Each shp In ThisWorkbook.Sheets(1).Shapes
    If shp.Name = "TextBox1" Then
         Set allMatches = regEx.Execute(shp.TextFrame2.TextRange.Text)
    End If
Next
于 2013-08-20T22:08:42.523 に答える