エクセルのマクロについて質問です。

画像

Excel | Visual Basic190閲覧xmlns="http://www.w3.org/2000/svg">500

ベストアンサー

0

ThanksImg質問者からのお礼コメント

回答ありがとうございます。 マクロ自体もしっかり動き、プログラムの内容も分かりやすかったです。

お礼日時:2021/12/2 7:36

その他の回答(2件)

0

>青字のように置換する方法を教えてください。 Sub sample() Dim re As Object Set re = CreateObject("VBScript.RegExp") 'パターンを指定 re.Pattern = "¥$?[A-Za-z]{1,2}¥$?[0-9]{1,2}" re.Global = True '全体を探す。 Dim RStr As Range, str As String Set RStr = Range("A2") '対象はここからスタート Dim A_Roop As Long For A_Roop = 1 To Cells(Rows.Count, 1).End(xlUp).Row 'A列最終行まで繰り返す If RStr.Value = "" Then '対象セルが空だったら '次の対象セルに移動する。 Set RStr = RStr.Offset(1) Else '空じゃなかったら str = RStr.Formula 'A1 スタイル表記で数式を表す Dim mc Set mc = re.Execute(str) 'パターンで文字列検索Matchesコレクションを返す。 'コレクションを一つずつ配列へ格納する処理【ここから】 Dim m, Cal(), i As Long For Each m In mc ReDim Preserve Cal(mc.Count - 1, 1) Cal(i, 0) = m.Value Cal(i, 1) = Range(m.Value).Value i = i + 1 Next m '【ここまで】 '置換処理をする【ここから】 Dim ketugou As String For i = 0 To mc.Count - 1 ketugou = Replace(str, Cal(i, 0), Cal(i, 1)) str = ketugou Next i '【ここまで】 '配列初期化 、ループ用カウンター初期化 Erase Cal i = 0 '対象セルへ置換した文字列を代入 RStr.Formula = str '対象セルを移動する。 Set RStr = RStr.Offset(1) End If Next A_Roop '処理が終わったらメッセージボックスを出して終わる。 MsgBox "完了しました。", vbOKOnly, Title:="置換処理" End Sub

画像
2

回答が 「不適切な内容が含まれている可能性があるため、非表示になっています。」 になってるけれど、何が問題かと思って見ていたら、別に普通の回答だと思っていたけれど・・・ 1行目の 「アルファベット2文字以内+数字をアドレスとみなして置換します。」 を間違って 「アルファベット2文字以内+数字をアドレスとみなして○○します。」 (この回答も非表示にされるかもしれないので、○○にしてます) になってるのが問題なのでしょうか、やっぱり?

2人がナイス!しています

>「不適切な内容…」が出たそうなので、鳥消して再回答します。 うーん、これは・・・ ウケを狙ってる訳じゃないと思うけど・・・ 質問者さんごめんなさい、回答とは関係ない書き込みで。