2016-10-06 34 views
1

初めてStackOverflow(ただしstackexchangeではありません)のポスターですので、明確にするか、書式設定を変更できるかどうかお知らせください。ありがとうございました。フォームコントロールで動作するコードがActiveXコントロールで動作しない

私がしているかもしれないが、私はこの質問に対する答えを見つけることができません。私はそれがVBAの基礎になると理解していないためだと思う。私はVBAの知識がありますが、ほとんど理解できません。つまり、ここに問題があると言われています。

マクロにリンクされたフォームコントロールコンボボックスをセットアップしました。入力範囲を別のシートのハイパーリンクのリストに設定し、範囲を「ハイパーリンク」と名づけました。各ハイパーリンクは、ブックの別のシートにあります。私はハイパーリンクに隣接する空白の売りにセルリンクを設定し、それを "Linked_Cell"と名づけました。画像は下にあります。

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 

これは自動的にドロップダウンメニューからそのシートを選択したとき、彼らが選択したシートに人を移動し、次のように

Form Control View

マクロコードです。

フォームコントロールの代わりにActive Xのコンボボックスを使用したいと思っています(テキストのサイズを変更するなど)。ただし、動作させることはできません。

"ListFillRange"を "Hyperlinks"に設定し、リンクされたセルを "Linked_cell"に設定して同じマクロコードを入力しました。それは次のようになります。

View of Active X Combo Box

私は時エラー1004を実行して受信のActive Xコンボボックスでのドロップダウンから選択します。「『_Worksheet』オブジェクトのメソッド 『range』に失敗しました。」私は、フォームコントロールにリンクされたマクロ内にあるとき、私の名前付き範囲が正しいことを確認し、コードはそのようなエラーを返しません。

ご協力いただきありがとうございます。ありがとうございました!

UPDATE:私は今、IF文の先頭に型の不一致エラーを受け取り、次の

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 

にコードを更新することにより、範囲エラーを修正しました。エラーが表示されず、フォームコントロールにリンクされた同一のマクロコードに対してこの動作がなぜ表示されないのかまだ分かりません。

P.S.申し訳ありませんが、私は私の個人的なデバッグチームにStackOverflowを回すつもりはないので、私は持っている主な質問は "なぜマクロとアクティブxコードの間で動作が異なりますか?

更新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 
+0

違反する前に、「Debug.Print HyperLink_Index」行を挿入してください。私はそれがあなたが思うものではないと思う。おそらく、あなたは正しい名前の範囲を持っていないでしょう。多分それは別のシートにありますか? –

+0

@JohnColemanありがとうございます。あなたは私を修正に導いた!私は自分の質問を更新し、それを投稿しました。私のコードは必要以上に複雑で、間違ったインデックスを使用していました(あなたが疑うように)。 –

答えて

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 
関連する問題