【问题标题】:Excel VBA, Replace value, Copy, revert to original then pasteExcel VBA,替换值,复制,还原为原始然后粘贴
【发布时间】:2017-10-12 17:52:57
【问题描述】:

我正在尝试创建一个从单元格或范围获取值的子例程,将单元格值中出现的“{NAME}”替换为“John”,选择并复制要粘贴的修改范围某处并将原始单元格值恢复为“{NAME}”。

我得到了一些乱七八糟的代码,逻辑有效,但每当我粘贴剪贴板内容时,我得到的是“{NAME}”值而不是“John”。

Sub BrandTemplate()
    If Worksheets("Sheet1").OLEObjects("Option_1").Object.Value = True Then
        Dim tmp As String
        Dim n As String
        Dim ss as String
        tmp = "John"
        ss = Worksheets("Sheet1").Range("A1").Value
        n = Replace(ss, "{NAME}", tmp)
        MsgBox n
        Worksheets("Sheet1").Range("A1").Value = n
        Worksheets("Sheet1").Range("A1").Copy
        ss = Worksheets("Sheet1").Range("A1").Value
        MsgBox ss + " ss content after replace"
        n = Replace(ss, tmp, "{NAME}")
        MsgBox n + " n content after restore"
        Worksheets("Sheet1").Range("A1").Value = n
        MsgBox n + " n cell content"
    End If
End Sub

我相信 Excel 会在您粘贴时实时获取选择要复制的单元格的内容。而不仅仅是当您指示复制时单元格的静态内容。

有没有办法做到这一点?

我假设另一种方法是包含 forms 2.0 对象并将字符串直接复制到剪贴板?

大师能开导我吗?

感谢您的宝贵时间!....

【问题讨论】:

  • 我是否理解正确:您想将给定单元格的内容放在剪贴板中,并替换其中的某个部分?这将使 Excel 脱离等式。如果是这样,请查看stackoverflow.com/questions/5552299/…
  • 我使用 Forms 2.0 方法让它工作
  • 随意发布此示例作为答案并自己接受,这样,其他遇到此问题的人也会受益。
  • 为什么不替换目标单元格中​​的标记(即粘贴之后)?

标签: excel vba replace copy


【解决方案1】:

这是一个超级简单的通用示例:

Sub TyS()
    Dim r1 As Range, r2 As Range

    Set r1 = Range("A1:A10")
    Set r2 = Range("B1:B10")

    r1.Replace What:="{NAME}", Replacement:="John"
    r1.Copy r2
    r1.Replace Replacement:="{NAME}", What:="John"


End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多