2017-12-08 2 views
-1

ワークシートの上部にナビゲーションバーがあり、すべてのワークシートにコードを貼り付けるのではなく、ワークブック全体にナビゲーションコードを適用したいとします。これは、ナビゲーションマクロを呼び出すセルをクリックすることによって機能します。私は、機能的であり、次のコード(抜粋)を持っていますが、確かにこれを行うのではなく、すべてのシートに貼り付けるのより効率的な方法が存在しなければならない。これは前に頼まれている場合複数のシートにわたるワークシートコード

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    'Navigation bar 
    If Not Intersect(Target, Range("E2:I3")) Is Nothing Then 
     Call goto_Introduction 
    End If 

    If Not Intersect(Target, Range("J2:N3")) Is Nothing Then 
     Call goto_OverviewInputs 
    End If 

    If Not Intersect(Target, Range("O2:S3")) Is Nothing Then 
     Call goto_PopulationSize 
    End If 

謝罪ではなく、持っていますあなたはモジュールにロジックを移す可能性のあるソリューションに、これまで...

+0

このタスクにボタンを使用することはお勧めできませんか?その後、モジュール内でプロシージャを定義することができ、これらの問題は発生しません。私はこれを行うベストプラクティスではないと思う。したがって、通常はボタンを使用します。 –

答えて

1

が見つかりました:

'put this within a module 
Option Explicit 

Public Sub NavigationBar(ByVal Target As Range) 
    If Not Intersect(Target, Target.Parent.Range("E2:I3")) Is Nothing Then 
     goto_Introduction 'note that the call statement is deprecated 
          'and not needed to call a procedure! 
    End If 

    If Not Intersect(Target, Target.Parent.Range("J2:N3")) Is Nothing Then 
     goto_OverviewInputs 
    End If 

    If Not Intersect(Target, Target.Parent.Range("O2:S3")) Is Nothing Then 
     goto_PopulationSize 
    End If 
End Sub 

ので、あなただけのすべてのワークシート

にそのロジックへの呼び出しを挿入する必要があります
+0

あなたの応答をありがとう、それは十分に簡単に働くようにして、私の将来のコーディングを整理するのに役立ちます! 「Option Explicit」の重要性は何ですか? – tboo132

+0

'Option Explicit'は、あなたが使用しようとしている全ての**変数を適切に宣言することを強制します(例えば' Dim i As Long')。そのため、厳密にする必要がありますが、誤って型付けされた変数名、ひいては隠されたエラーを防ぐことができます。変数名を誤って入力すると、この変数が宣言されていないことが通知されます。 **常に** Option Explicitを使うのがベストプラクティスです。それを使わない理由はありません。初心者の方でも、人生とデバッグをはるかに簡単にします。注:この回答が役に立った場合、他人に見えるようにそれを解決策としてマークすることを検討してください。 –

関連する問題