
エクセルVBAで、文字列と正規パターンを引数として渡すと、マッチした文字位置の羅列を","区切りの文字列で返すようなFunctionを作ろうと考えています。なかなかうまく作れなくて困っています。どなたか、詳しいかたいらっしゃいましたら教えて頂けないでしょうか?宜しくお願いいたします。
発生する実行時エラー
実行時エラー'5020':
'Execute'メソッドは失敗しました:'IRegExp2'オブジェクト
追伸:ネットで、自動作成してくれるサイトがありそのコードを参考にアレンジしました。つじつまが合わない部分は、私の改編によるものだと思います。
Function Get_Position_RegExp(MySource As String, MyPattern As String) As Variant
Dim MyReg As RegExp
Dim MyMatch As MatchCollection
Dim i As Match
Set MyReg = CreateObject("VBScript.RegExp")
With MyReg
.Pattern = MyPattern
.Global = True
Set MyMatch = .Execute(MySource)
End With
Get_Position_RegExp = ""
For Each i In MyMatch
Get_Position_RegExp = Get_Position_RegExp & "," & i.FirstIndex + 1
Next
Set MyMatch = Nothing
Set MyReg = Nothing
End Function
No.2ベストアンサー
- 回答日時:
Function プロシージャに致命的なエラーはありません。
#1 ご回答のようにマッチパターン(MyPattern)の指定に誤りがあるようですね。
細かな部分を若干修正してみました。ご参考までに。
Sub TestProc()
Dim s As String
s = Get_Position_RegExp("RegExpテスト。RegExpでマッチ位置を調べる。", _
"RegExp")
MsgBox s
End Sub
' // MyPattern にマッチする位置をカンマ区切りの文字列で返す
Function Get_Position_RegExp( _
ByVal MySource As String, _
ByVal MyPattern As String _
) As String
Dim MyReg As RegExp
Dim MyMatch As MatchCollection
Dim i As Match
Dim s As String
Set MyReg = CreateObject("VBScript.RegExp")
With MyReg
.Pattern = MyPattern
.IgnoreCase = False ' 大文字・小文字を区別しない
.Global = True
Set MyMatch = .Execute(MySource)
End With
If MyMatch.Count > 0 Then
For Each i In MyMatch
' // カンマは後ろにつける
s = s & CStr(i.FirstIndex + 1) & ","
Next
' // 末尾の余計なカンマを落とす
Get_Position_RegExp = Left$(s, Len(s) - 1)
End If
Set MyMatch = Nothing
Set MyReg = Nothing
End Function
丁寧な回答ありがとうございます。
パターンを調べたところ、ご指摘の通り間違いがありました。
その上、至らない部分を修正までして頂き大変助かります。
何が、至らなかったのか?なぜ、カンマは後につけるのか?などその意味についてじっくりと考えていきたいと思います。本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マッチングアプリで再マッチし...
-
なよなよした男性に嫌悪感
-
タバコの味ってライターで変わ...
-
マッチングアプリで再マッチし...
-
マッチングアプリで知り合った...
-
ログファイルを後ろから検索し...
-
創価学会などの新興宗教信者の...
-
マッチングアプリについてです...
-
初デートのあと返信が極端に遅...
-
女性に質問です、相手のおちん...
-
サッカーでのTRMとは何の略
-
マッチングアプリで本気の彼氏...
-
マッチは古くなるとどうなるの...
-
恋愛感情がない相手にも自宅住...
-
お見合いを断った後で、釣書に...
-
未使用マッチの捨て方
-
目をつぶるべきですか?-お見...
-
マッチングアプリでマッチした...
-
私は男で女の人に声がかっこい...
-
お見合いのタブー犯してしまい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
タバコの味ってライターで変わ...
-
女性に質問です、相手のおちん...
-
恋愛感情がない相手にも自宅住...
-
なよなよした男性に嫌悪感
-
マッチングアプリで再マッチし...
-
マッチングアプリで知り合った...
-
デートの誘いに対する曖昧な返...
-
ログファイルを後ろから検索し...
-
気になる人と初デートで嘔吐し...
-
こいつやお前と呼ぶ男性心理は?
-
【至急】エクセルで複数のファ...
-
マッチとライター。どちらがコ...
-
結婚相談所のお見合いで一回で...
-
創価学会などの新興宗教信者の...
-
周りから
-
お似合いに見える男女ってどん...
-
マッチングアプリで再マッチし...
-
未成年はzippo購入不可ですか?
-
マッチングアプリでマッチした...
-
マッチングアプリでマッチした...
おすすめ情報