2016-11-17 4 views
0

私はVBAを新しくしていますので、私と一緒に裸にしてください。私は、同じブック内の別のシートへのハイパーリンクをたどり、そのシートをハイパーリンクに関連付けられた値でフィルタリングするコードを持っています。最初にVBAプロセスの外部にハイパーリンクを作成することに注意してください。これは私がそれをやった方法です:Excel VBAソースブックの値でワークブックとオートフィルタを分離するためのハイパーリンクを追い越す

a)のVisual Basicを開き、[開発]タブの下

b)はあなたにマクロを追加し、[挿入]をクリックします>モジュール

Cにしたい右クリックワークブック)をコピーし、モジュールに次のコードを貼り付けます。

Sub Filter(sCriteria As String) 

lField = Cells(1, 1).EntireRow.Find("Isometric Number", LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False).Column 
Range("a1").AutoFilter Field:=lField, _ 
Criteria1:=sCriteria 

End Sub 

私の理解では、このモジュールは以下に呼ばれる特定の値によって、ハイパーリンク]タブの[アイソメトリック番号という名前の列をオートフィルタするワークブックを伝えることです。カラム名は任意の値に変更できますが、モジュールとオートフィルタを発生させるタブでカラム名を変更する必要があります。

D)次のコードをコピーしてメインタブに貼り付けます(Microsoft Excelオブジェクトを展開し、メインタブをダブルクリックします)。

Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 
    Call Filter(sCriteria:=Cells(Target.Parent.Row, 2).Value) 
End Sub 

このコードは、自動フィルタリングするモジュールのフィルタ条件を決定します。現在、ハイパーリンクと同じ行のセルの値と2番目の列の値でフィルタリングするように設定されています。

最終的には:私のハイパーリンクは、別のブック(同じブック内のシートではなく)を参照するとき、私は次のエラーが表示されます:オブジェクト変数またはWithブロック変数が設定されていません(エラー91)。私は、デバッグ・ツールを実行すると、これはハイライト表示されますラインです:

lField = Cells(1, 1).EntireRow.Find("Isometric Number", LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False).Column 

私はこれで読んでのかなりやったが、私は、コードを読んで理解する方法を考え出す困難を抱えています。答えに最も近いのはこの投稿です:Can Excel vba invoke an autofilter when a hyperlink is clicked to open new workbook?

あなたの助けに感謝します。

答えて

0

現在開いているブックを参照しているので、この行を変更してみてください。用紙のインデックス(または名前)を変更する必要がある可能性があります。

lField = ThisWorkbook.Sheets(1).Cells(1, 1).EntireRow.Find("Isometric Number", LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False).Column 
+0

返信ごとに広告申込情報を更新しました。私が今取得しているエラーは、同じブック内の別のシートと別のブックへのハイパーリンクへのハイパーリンクを試みると、どちらも "オブジェクト変数またはWithブロック変数が設定されていません(エラー91)"です。 – chumito10

+0

関連するシートの最初の行にテキスト「等尺数」がありますか?シート(1)を使用しましたが、異なるインデックスまたはシート名(たとえば、シート(「フレッド」)を使用して調整する必要があります。 – SJR

+0

EUREKA!はい、私は肯定的です。私はインデックス部分が正しい(いくつかの試行錯誤を確認しました)。このWebページでは、.Sheet()のインデックス番号についても説明しました。https://msdn.microsoft.com/en-us/library/office/aa221564(v=office.11​​).aspx 問題は、最初の行ではなく、2番目の行にありました。最初の行を削除すると(「等尺数」を1行目の位置まで移動させると)、それは魅力的に機能しました。 コードのどの部分が第1行の代わりに第2行を見ることができるのか分かりますか? – chumito10

関連する問題