【问题标题】:Wildcards in vba string variablevba 字符串变量中的通配符
【发布时间】:2019-04-19 18:15:40
【问题描述】:

我想知道简单 VBA 替换函数中的通配符是否有效。 所以我有一个字符串变量,比如说:

str = " Lorem Ipsum 3.07 EUR Dorum"

我需要删除这部分“3.07 EUR”。我肯定知道金额,但不知道货币 我试过的代码不起作用:

str1 = Replace(str, " 3.07 ???", "")

我知道当我在单元格或范围内进行替换时它会起作用,因为我有一部分代码可以做到这一点。单元格中的替换和字符串变量中的替换有什么区别,我只是做错了吗?

【问题讨论】:

  • 是什么让您无法亲自查看?
  • 如果我不检查,我不会发布问题 :) 它对我不起作用,但我希望我只是做错了
  • 我发现的唯一一个是正则表达式。但它在代码中造成了很多混乱,而不是简单的替换并需要添加引用。
  • Replace 的文档没有提到任何通配符。关于 RegEx,您可以设置一个函数 RegExReplace(input, pattern, replacement) 并且在您的代码中仍然有一个单行。添加引用的要求可以通过后期绑定 RegEx 对象来规避。 (但仍然需要安装的依赖项。)我同意,VBA 中的 RegEx 有点复杂。但是,他们仍然提供了一种不需要对所有预期货币标识符进行硬编码的解决方案。

标签: excel vba string variables replace


【解决方案1】:

只需使用正则表达式(假设您知道数字,如您所说):

Sub Test()
    MsgBox RemoveString(" Lorem Ipsum 3.07 EUR Dorum", "3.07")
End Sub

Function RemoveString(s$, num$)
    With CreateObject("VBScript.RegExp")
        .Pattern = num + "\s+[A-Z]{3}"
        RemoveString = .Replace(s, "")
    End With
End Function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 2016-06-02
    • 2011-08-18
    • 2020-09-01
    • 1970-01-01
    相关资源
    最近更新 更多