首页 > 解决方案 > Excel VBA || 在 Selection.Formula 语句中使用变量值

问题描述

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

代码:

    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

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

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

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

标签: vbaexcel

解决方案


改变""& UniqID &"" to """ & UniqID &"""

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

这很令人困惑,但在你把头绕过去之后它就有意义了。你也可以这样做:

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

其中 Chr(34) 是双引号。


推荐阅读