【问题标题】:cannot assign value starting with a quote to another cell in excel vba无法以引号开头的值分配给excel vba中的另一个单元格
【发布时间】:2012-06-01 20:38:15
【问题描述】:

我有一个 Excel 工作表,其中一个单元格由网络查询填充。该单元格的内容以单引号 (') 开头。单元格为文本数字格式。

当我使用 VBA 将此单元格的内容分配给另一个单元格时,引号被删除,但我不希望这种情况发生。

如何获得单元格的精确副本,即未删除引用?

我使用:

Dim lSourceRange as Range
Dim lTargetRange as Range

set lSourceRange = Cells(1,1)
set lTargetRange = Cells(2,2)

lTargetRange.numberformat = '@'
lTargetRange.value2 = lSourceRange.Value2

我也试过

lTargetRange.value2 = lSourceRange.text
lTargetRange.value2 = lSourceRange.Value

lTargetRange.value = lSourceRange.text
lTargetRange.value = lSourceRange.Value

始终会删除初始引号。 (值/值2/文本 lSourceRange's-Hertogenbosch,在调试器中显示为 "'s-Hertogenbosch")

我知道引用是为了向 Excel 表明我想使用文本,但我需要引用作为值的一部分(以及工作表中的显示)

【问题讨论】:

    标签: vba excel-2007 quote


    【解决方案1】:

    试试这个

    lTargetRange.value = "'" & lSourceRange.Value
    

    或者使用这个

    lSourceRange.Copy lTargetRange
    

    【讨论】:

    • 这(第一个解决方案)确实显示了一个引号,但现在在编辑栏中选择单元格时,显示的值有两个单引号。选择源单元格(其中引号可见),然后在公式栏中也可见单个单引号
    • 第二种使用复制的解决方案似乎可以完成这项工作。我在使用 application.screenupdating = false 隐藏结果时遇到了一些问题,它并没有隐藏所有内容,但是您的声明在这方面也有效。谢谢@sidd
    • 很高兴它解决了。顺便说一句,这两种方法都有效。我有点惊讶你为什么在第一种方法中看到 2 个双引号。
    猜你喜欢
    • 2017-09-13
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    相关资源
    最近更新 更多