初めて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
これは自動的にドロップダウンメニューからそのシートを選択したとき、彼らが選択したシートに人を移動し、次のように
マクロコードです。
フォームコントロールの代わりにActive Xのコンボボックスを使用したいと思っています(テキストのサイズを変更するなど)。ただし、動作させることはできません。
"ListFillRange"を "Hyperlinks"に設定し、リンクされたセルを "Linked_cell"に設定して同じマクロコードを入力しました。それは次のようになります。
私は時エラー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
違反する前に、「Debug.Print HyperLink_Index」行を挿入してください。私はそれがあなたが思うものではないと思う。おそらく、あなたは正しい名前の範囲を持っていないでしょう。多分それは別のシートにありますか? –
@JohnColemanありがとうございます。あなたは私を修正に導いた!私は自分の質問を更新し、それを投稿しました。私のコードは必要以上に複雑で、間違ったインデックスを使用していました(あなたが疑うように)。 –