【发布时间】: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) 的原因。它更冗长,但您不会陷入疯狂的引号转义开始。