多分、正規表現を使った方が早いです。
VBA
1s = "対象文字列"
2Set re = CreateObject("VBScript.RegExp")
3re.Pattern = "[A-Za-z]"
4re.IgnoreCase = False
5re.Global = True
6For Each Match In re.Execute(s)
7 Mid(s, Match.firstindex + 1, 1) = StrConv(Match.Value, vbNarrow)
8Next Match
追記
グローバル変数?正規表現設定?専門用語が分からず回答がいまいちピンときません。
このコードをどこに配置したらいいんでしょうか?
とのことなので、サンプルです。ちょっと改善しておきました。
正規表現という概念を知らないということなので、コードの意味が分からないと思いますが。
VBA
1Dim re 'これがグローバル変数(VBA用語ではモジュールレベル変数)。モジュール内の全Sub/Functionから使える
2Sub メイン処理()
3 Set re = CreateObject("VBScript.RegExp")
4 re.Pattern = "[A-Za-z]+"
5 re.IgnoreCase = False
6 re.Global = True
7
8 ~~~~~
9 x = conv(x)
10 ~~~~~
11End Sub
12Function conv(s as String) as String
13 For Each Match In re.Execute(s)
14 Mid(s, Match.firstindex + 1, Match.Length) = StrConv(Match.Value, vbNarrow)
15 Next Match
16 conv = s
17End Function
追記2
初期化も関数内部で行うように変更。
VBA
1Function conv(s As String) As String
2 Static re As Object
3 If re Is Nothing Then
4 Set re = CreateObject("VBScript.RegExp")
5 re.Pattern = "[A-Za-z]+"
6 re.IgnoreCase = False
7 re.Global = True
8 End If
9 For Each Match In re.Execute(s)
10 Mid(s, Match.firstindex + 1, Match.Length) = StrConv(Match.Value, vbNarrow)
11 Next Match
12 conv = s
13End Function
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/10/18 00:40
退会済みユーザー
2023/10/18 04:03
退会済みユーザー
2023/10/18 04:43
退会済みユーザー
2023/10/18 04:45
2023/10/18 05:58
退会済みユーザー
2023/10/18 06:04
2023/10/18 06:39
退会済みユーザー
2023/10/18 06:53
2023/10/18 07:07
退会済みユーザー
2023/10/18 07:16
2023/10/18 08:32
2023/10/18 09:13
退会済みユーザー
2023/10/19 00:45
2023/10/19 02:11