
エクセル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も見ています
-
split関数で区切り文字がない場合
Visual Basic(VBA)
-
VBAで改行の入ったデータの正規表現について
Excel(エクセル)
-
動的配列が存在(要素が有る)か否かを判定できますか?
Visual Basic(VBA)
-
-
4
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
5
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
6
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
7
2画面表示でのVBAのボタン押下後のform表示の位置
Excel(エクセル)
-
8
Excel-VBAの「しばらくお待ちください」のダイアログが自動的に閉じない
Excel(エクセル)
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ログファイルを後ろから検索し...
-
重曹とクエン酸との見分け方
-
タバコの味ってライターで変わ...
-
周りから
-
年上の女性と付き合いたいです...
-
マッチングアプリで知り合った...
-
マッチングアプリで再マッチし...
-
マッチングアプリでマッチした...
-
彼女が好きでもマッチングアプ...
-
マッチとライター。どちらがコ...
-
ExcelでRegExpのFunctionの作成
-
100均 ライター マッチ 経済的...
-
お見合いをしたのですが、相手...
-
どこへ消えた? 2B弾
-
好きな人がお見合いをします。
-
お似合いに見える男女ってどん...
-
マッチングアプリでマッチした...
-
お見合い初対面でちゃん付け
-
一般的に、お見合い結婚は負け...
-
サッカーでのTRMとは何の略
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
タバコの味ってライターで変わ...
-
女性に質問です、相手のおちん...
-
恋愛感情がない相手にも自宅住...
-
なよなよした男性に嫌悪感
-
マッチングアプリで再マッチし...
-
マッチングアプリで知り合った...
-
デートの誘いに対する曖昧な返...
-
ログファイルを後ろから検索し...
-
気になる人と初デートで嘔吐し...
-
こいつやお前と呼ぶ男性心理は?
-
【至急】エクセルで複数のファ...
-
マッチとライター。どちらがコ...
-
結婚相談所のお見合いで一回で...
-
創価学会などの新興宗教信者の...
-
周りから
-
お似合いに見える男女ってどん...
-
マッチングアプリで再マッチし...
-
未成年はzippo購入不可ですか?
-
マッチングアプリでマッチした...
-
マッチングアプリでマッチした...
おすすめ情報