我想通过指定 substring_a 的位置和长度,将字符串中的子字符串 (substring_a) 替换为另一个子字符串 (substring_b)。
我正在尝试使用 Mid 函数,但除非 substring_b 等于或长于 substring_a ,否则它似乎不起作用
这是我的代码:
Sub Test_Mid()
Dim starting_text As String
Dim replacement_text As String
starting_text = "Long Starting Text"
replacement_text = "End"
Mid(starting_text, 6, 8) = replacement_text
MsgBox (starting_text)
End Sub
Run Code Online (Sandbox Code Playgroud)
我希望代码返回“Long End Text”,但它返回“Long Endrting Text”。
我该如何解决?
注:以上是一个说明性示例。我无法直接将 Replace 函数与 replacement_text 一起使用,因为在我的实际宏中, replacement_text 是可变的。
你正在把一件简单的事情变得过于复杂。所需要的只是简单的替换。
starting_text = Replace(starting_text, "Starting", "End")
Run Code Online (Sandbox Code Playgroud)
要仅替换第一次出现的位置,请使用以下命令:
starting_text = Replace(starting_text, "Starting", "End", 1, 1)
Run Code Online (Sandbox Code Playgroud)
或者,如果它只是一次出现,从特定位置开始,请使用以下命令:
starting_text = Replace(starting_text, "Starting", "End", Instr(starting_text, "Starting"), 1)
Run Code Online (Sandbox Code Playgroud)
或者,如果它只是出现一次,从特定位置开始,并且您不希望它区分大小写,请使用以下命令:
starting_text = Replace(starting_text, "Starting", "End", Instr(starting_text, "Starting", vbTextCompare), 1, vbTextCompare)
Run Code Online (Sandbox Code Playgroud)