使用 VBA 替换字符串中特定位置的文本

use*_*051 2 excel vba

我想通过指定 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 是可变的。

bra*_*raX 5

你正在把一件简单的事情变得过于复杂。所需要的只是简单的替换。

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)

VBA 替换函数