适用于表单控件的代码不适用于ActiveX控件

时间:2016-10-06 15:44:12

标签: excel vba excel-vba hyperlink macros

StackOverflow中的第一次海报(但不是stackexchange)所以请告诉我是否可以澄清或进行任何格式更改。谢谢。

尽我所能,我无法找到这个问题的答案。我怀疑它是由于在VBA的基础知识方面缺乏了解。我对VBA有所了解,但知之甚少。话虽如此,这就是问题所在。

我已经设置了一个链接到宏的表单控件组合框。我已将输入范围设置为不同工作表中的超链接列表,并命名范围"超链接"。每个超链接都指向工作簿中的不同工作表。我已将单元格链接设置为与超链接相邻的空白销售并命名为" Linked_Cell。"下面是一张图片。

Form Control View

宏代码如下

Sub DropDown10_Change()
HyperLink_Index = Range("Linked_cell")
  If Range("HyperLinks").Offset(HyperLink_Index - 1, 0).Hyperlinks(1).Name   <> "" Then
       Range("HyperLinks").Offset(HyperLink_Index - 1, 0).Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
End If
End Sub

这会自动将某人移动到他们从下拉菜单中选择该工作表时所选择的工作表。

我想使用Active X组合框代替表单控件,原因很明显(调整文本大小等)但是,我无法使用它。

我已设置&#34; ListFillRange&#34;到&#34;超链接&#34;并将单元格链接到&#34; Linked_cell&#34;并输入相同的宏代码。它看起来像这样:

View of Active X Combo Box

当我从Active X Combo框中的下拉列表中选择时,我收到运行时错误1004:&#34;方法&#39;范围&#39;对象&#39; _worksheet&#39;失败&#34。我已经验证了我的命名范围是正确的,并且代码在链接到表单控件的宏中没有返回错误。

非常感谢任何帮助!谢谢!

更新:通过将代码更新为以下

来修复范围错误
Sub ComboBox1_Change()
Dim HyperLink_Index As Range
Set HyperLink_Index = Sheets("SheetList").Range("Linked_Cell")
  If Sheets("SheetList").Range("HyperLinks").Offset(HyperLink_Index - 1, 0).Hyperlinks(1).Name <> "" Then
       Sheets("SheetList").Range("HyperLinks").Offset(HyperLink_Index - 1, 0).Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
End If
End Sub

我现在在IF语句的开头收到类型不匹配错误。我没有看到错误,但仍然不知道为什么这种行为对于链接到表单控件的相同宏代码不会出现。

P.S。对不起,我不是故意将StackOverflow转到我的个人调试团队,所以我的主要问题是&#34;为什么宏和活动x代码之间的行为不同?&#34;

更新2:找到修复程序。使用了错误的索引。修复方法如下。将它留在这里,万一其他人可以发现它有用。

Sub ComboBox1_Change()

If ComboBox1.Value <> "" Then
       Sheets("SheetList").Range("Hyperlinks").Hyperlinks(ComboBox1.ListIndex + 1).Follow NewWindow:=False, AddHistory:=True

End If
End Sub 

1 个答案:

答案 0 :(得分:0)

找到了修复方法。使用了错误的索引。修复方法如下。留在这里,以防其他人发现它有用。

Sub ComboBox1_Change()

If ComboBox1.Value <> "" Then
   Sheets("SheetList").Range("Hyperlinks").Hyperlinks(ComboBox1.ListIndex +1).Follow NewWindow:=False, AddHistory:=True

End If
End Sub