【问题标题】:Excel VBA || Using a variable value in a Selection.Formula statementExcel VBA ||在 Selection.Formula 语句中使用变量值
【发布时间】:2018-05-02 15:55:57
【问题描述】:

我知道整个网站有很多相关的问题,但无论出于何种原因,我都无法让这个宏产生正确的结果...请帮助!!

代码:

    Sheets("Interface Catalogue").Select
    Dim UniqID As String
    UniqID = Trim(ActiveCell.Value)


    Sheets("Data Elements").Select
    LastB = Cells(Rows.Count, "B").End(xlUp).Row
    LastA = Cells(Rows.Count, "A").End(xlUp).Row
    If LastA > LastB Then
            Range("A" & Rows.Count).End(xlUp).Offset(10).Select
            Selection.Formula = "=HYPERLINK(""#""&CELL(""address"",INDEX('Interface Catalogue'!F:F,MATCH(""& UniqID &"",'Interface Catalogue'!F:F,0))),""& UniqID &"")"
        Else
            Range("B" & Rows.Count).End(xlUp).Offset(2).Previous.Select
            Selection.Formula = "=HYPERLINK(""#""&CELL(""address"",INDEX('Interface Catalogue'!F:F,MATCH(""& UniqID &"",'Interface Catalogue'!F:F,0))),""& UniqID &"")"

        End If
End Sub

运行宏应在“数据元素”工作表(A 列或 B 列,基于“If”)的单元格中输入超链接,该超链接链接到分配给 UniqID 变量的值(宏时为 ActiveCell运行)在“接口目录”工作表中找到...

我几乎可以肯定,问题在于公式如何解释我的变量(“”和 UniqID 和“” - - 正确的语法???)......当我在公式中硬编码一个值而不是使用UniqID 变量,它可以工作。当我调试并检查分配给 UniqID 变量的值时,它是 ActiveCell 值(如预期的那样)。我目前得到的是相应“数据元素”单元格中的超链接“#N/A”,因此其余代码似乎正在工作。该公式根本没有在“接口目录”选项卡中找到值(同样,这似乎与变量在 selection.formula 语句中的使用方式有关,因为当我在那里硬编码一个值时它可以工作) .

需要明确的是,我是 VBA 的完全新手(就像我昨天刚开始一样)......真的只是希望弄清楚这一点。谢谢,提前!!

【问题讨论】:

  • ""& UniqID &"" 更改为 """ & UniqID &""" 字符串中的两个双引号将转换为单个双引号。所以你还需要一个来结束字符串,这样你就可以连接你的变量。然后再一次启动字符串备份,然后再两次转换成文字"。这很令人困惑,但在你把头绕过去之后它就有意义了。您也可以这样做:" & Chr(34) & UniqID & Chr(34) & " 其中Chr(34) 是双引号。
  • 哇!你不知道我尝试了多少种不同版本的语法。非常感谢!你能简要地帮助我理解第三组引号的必要性吗?
  • 抱歉,没有看到您的其他回复。完美的。再次感谢!
  • 如果你有一个像"This is a string, Hi" 这样的字符串,并且你想在“hi”周围加上双引号,你可以写成"This is a string, ""Hi""" 注意我们有两个双引号表示一个单引号。我们用另一个双引号结束字符串,因此连续三个。它看起来有点讨厌,有很多引号和连接。这就是我经常使用 Chr(34) 的原因。它更冗长,但您不会陷入疯狂的引号转义开始。

标签: vba excel


【解决方案1】:

更改""& UniqID &"" to """ & UniqID &"""

字符串中的两个双引号转换为一个双引号。所以你还需要一个来结束字符串,这样你就可以连接你的变量。然后再一个开始字符串备份,然后再两个变成文字“。

这很令人困惑,但是在您仔细考虑它之后才有意义。你也可以这样做:

" & Chr(34) & UniqID & Chr(34) & " 

其中 Chr(34) 是双引号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 2017-11-16
    • 1970-01-01
    相关资源
    最近更新 更多