【问题标题】:Adding a hyperlink with VBA--coding syntax使用 VBA--编码语法添加超链接
【发布时间】:2018-09-22 19:49:50
【问题描述】:

我正在尝试将超链接添加到工作簿数据从摘要工作簿中提取。我可以获取填充单元格的文件路径没有问题,但是当我输入 hyperlink.add 时,我通常会收到参数错误。

这为我提供了所选单元格中的 URL:

.offset(rowcount,112)=sXLFile

我尝试使用此方法添加超链接,但在突出显示“sXLFile”后的第二个逗号时出现参数错误:

hyperlinks.Add (anchor:=.Offset(rowcount, 112), address:= sXLFile,,, incidentreport & agentname)

我认为这可以做一个超链接到保存在 sXLFile 中的文件路径并读取为 IncidentReportAgentName。当我在下面的代码中引用确切的工作簿/工作表时,我收到运行时错误 13:类型不匹配。

Workbooks("Incident Reports").Worksheets("Supplementary").Hyperlink.Add anchor:=.Offset(rowcount, 112), Address:=sXLFile, TextToDisplay:=IncidentReport & AgentName

有人看到我做错了吗?

【问题讨论】:

  • 要解决问题,首先尝试将变量 (xSLFile) 替换为一个值。
  • 另外,我不确定您所说的 “这为我提供了所选单元格中的 URL:.offset(rowcount,112)=sXLFile。这 not 是否引用选定的单元格。这也sXLFile赋值。
  • 收到错误时sXLFile 的值是多少?另外,如果.Offset(rowcount, 112) = sXLFile 那么你为什么要引用这两个?即,如果.Offset(rowcount, 112) = sXLFile 然后... anchor:=.Offset(rowcount, 112), Address:=sXLFile ... 正在使单元格链接到自身...
  • 没有。 'sXLFile' 没有给出错误。 sXLFile = ThisWorkBook.FullNameURLEncoded。它返回文件保存位置的文件路径。我虽然可以使用它作为超链接地址。该错误突出显示 sXLFile 之后的第二个“,”或逗号。查看 Hyperlink.Add 所需的参数时,我不想添加子地址或屏幕提示,这些是可选参数。我认为我仍然需要使用“,”作为这些参数的地标。
  • 对不起,你误会了,我不是在问它是否给出错误 - 我在问sXLFile 的值是什么你得到错误。如果您不确定如何检查,请在出现错误的行之前添加一个临时行 MsgBox sXLFile

标签: vba excel hyperlink runtime-error


【解决方案1】:

你有几件事正在发生。你试图一次完成太多事情,所以我们需要退后一步。

第一期 - 你说:

查看 Hyperlink.Add 所需的参数时,我不想添加子地址或屏幕提示,这些是可选参数。我认为我仍然需要使用“,”作为这些参数的地标。

函数的参数可以通过以下两种方式之一输入:

FunctionName Parameter1Name:=Parameter1Value, Parameter2Name:=Parameter2Value, Parameter3Name:=Parameter3Value

...等价于:

FunctionName Parameter1Value, Parameter2Value, Parameter3Value

...但是使用Parameter1Name:= 的目的是让您可以跳过参数或乱序包含它们而不会出现问题。

所以这个:

FunctionName Parameter1Value, , Parameter3Value

...等同于:

FunctionName Parameter1Name:=Parameter1Value, Parameter3Name:=Parameter3Value

...这也等同于:

FunctionName Parameter3Name:=Parameter3Value, Parameter1Name:=Parameter1Value

因此,当您使用 := 指定参数时,不要为缺少的参数添加额外的逗号。


疑难解答 101

如果上面的更正仍然不能解决你的问题,试试这个。

故障排除的几个早期步骤应该是:

  1. 实际值替换所有变量和引用值。例如:不要引用Offset 来引用锚点的位置,而是指定实际 范围。

    • 因此,不要指定anchor:=.Offset(rowcount, 112),而是指定anchor:=Range("A1") 或链接应该位于的任何单元格。

    • 使用address:= "http://www.google.com(或目标地址所在的任何位置)代替address:= sXLFile

  2. 尽可能简化表达式以使基本功能正常工作。例如,您现在不需要需要“TextToDisplay”标签来使您的链接正常工作。暂时摆脱它。

因此,在这些更改之后,您的整条生产线应该是一个不错的、简化的和功能的

Workbooks("Incident Reports").Worksheets("Supplementary").Hyperlink.Add Anchor:=Range("A1"), Address:= "http://www.google.com"

如果确实做到了应有的效果,现在您可以开始将值更改为变量并添加更多参数...但是进行一次更改,然后对其进行测试。然后进行下一个更改,并对其进行测试。一次更改一个。

更多信息:

【讨论】:

  • 当我删除多余的逗号时,我得到一个运行时错误 9-subscript out of range。我使用sXLFile是因为每次超链接都会引用不同的文档,所以不能使用静态地址。我需要更改每个文件的地址。我不能这样吗?
  • @ashleedawg hyperlinks.remove?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 2017-08-06
  • 1970-01-01
  • 1970-01-01
  • 2015-07-23
相关资源
最近更新 更多