gpt4 book ai didi

excel - 动态替换vba中的文本

转载 作者:行者123 更新时间:2023-12-02 11:27:32 24 4
gpt4 key购买 nike

我正在尝试创建一个例程来替换给定字符串中可变数量的值。例如,如果我的电子表格中有一个基本文本:

“您选择的车辆 {0} 表明您的轮胎应在 {1} 到 {2} 之间。但是,您已为此车辆输入了 {3} 个轮胎。请相应地更新记录。”

我想用应用程序中的常量值或用户输入的其他变量替换 token 。我正在尝试创建一个具有如下签名的例程,其中 RowID 是电子表格中基本文本所在的行,ReplacementValues 是包含 n 个变量的数组:

Sub ShowMsg(ByVal RowID As Integer, Optional ByVal ReplacementValues As Variant)

我不知道如何循环文本并替换每个标记,而不在每次迭代中重复基本消息的整个文本。如果可能的话,我希望保持例程相当通用,而不是特定于 Excel,以防我稍后需要将应用程序移动到数据库。

希望我已经充分解释了这一点;任何帮助将不胜感激。

最佳答案

你可以;

Sub ShowMsg(ByVal RowID As Integer, Optional ReplacementValues As Variant)
Dim data As String, i As Long
If Not IsMissing(ReplacementValues) Then
data = Range("A" & RowID).Value
For i = 0 To UBound(ReplacementValues)
data = Replace(data, "{" & i & "}", ReplacementValues(i))
Next
msgbox data
End If
End Sub

调用方式;

Dim a() As Variant: a = Array("aa", "bb", "cc")
ShowMsg 8, a

或者替代方案:

Sub ShowMsg(ByVal RowID As Integer, ParamArray ReplacementValues() As Variant)
Dim data As String, i As Long
If Not IsMissing(ReplacementValues) Then
data = Range("A" & RowID).Value
If IsArray(ReplacementValues(0)) Then ReplacementValues = ReplacementValues(0)
For i = 0 To UBound(ReplacementValues)
data = Replace(data, "{" & i & "}", ReplacementValues(i))
Next
msgbox data
End If
End Sub

可以以相同的方式调用,也可以另外使用序数参数调用;

ShowMsg 8, "aa", "bb", "cc"

关于excel - 动态替换vba中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10687262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com