2013-09-05 5 views
5

「サイドバイサイド」と「同期スクロール」により、2つのスプレッドシートの比較がこれまで以上に簡単になりました。ただし、「同期切り替え」タブはありません。そのため、ワークブックのいずれかの別のタブに切り替えてスクロールを続けると、同期されたスクロールがかなり面白くなります。サイドバイサイドモードでウィンドウを探す

私は手作業で行われているので、文句を言ってはいけません。私はこの機能を賢明に使うべきです。

怠惰な開発者として、自分自身を掘り起こすためのコードを書いてみたいと思います。サイドウィンドウモードでピアウィンドウのワークシートの切り替えを自動化するマクロを書くことはできますか?

それは2つのステップに分解し:窓、最も可能性が高いのActiveWindowは、サイド・バイ・サイド方式である場合

  1. は、どのように私は知っていますか?
  2. もしそうなら、どのウィンドウがそのピアであるかをどのように伝えますか?

私は宿題をしました。それは、Excelは非常にこの機能でフレンドリーなプログラミングではないようだ。 3つの方法

  • BreakSideBySide()
  • CompareSideBySideWith(WindowName)
  • ResetPositionsSideBySide()

と1つのブール型プロパティ

  • SyncScrollingSideBySide
があります。

は、この機能に関連するWindowsコレクションですが、私の質問を解決するには不十分です。

これを達成する方法を知っている人はいますか?それとも、それは本当に不可能ですか?前もって感謝します。

答えて

0

あなたはWorkbook_SheetActivateイベントを使用してこれを達成することができます

http://msdn.microsoft.com/en-us/library/office/ff195710.aspx

あなたが、あなたはThisWorkbookオブジェクトに使用すると、アクティブなワークシートを変更するたびに、このコードを置けば、それは意志...

  1. 名前が異なるすべての開いているワークブックを循環する
  2. クリックしたシートと同じ名前のワークシートを探します
  3. これは、開いているすべてのブック内に存在するワークシートが必要であることを他のワークブック

    Private Sub Workbook_SheetActivate(ByVal Sh As Object) 
    
        For i = 1 To Application.Workbooks.Count 
         If Application.Workbooks(i).Name <> ThisWorkbook.Name Then 
    
          Dim otherWB As Workbook 
          Set otherWB = Application.Workbooks(i) 
          otherWB.Sheets(Sh.Name).Activate 
    
         End If 
        Next 
    
    End Sub 
    

注ワークシートをアクティブにします。そうでない場合はエラーになります。ただし、対応していないワークシートを含むワークブックを無視するエラー処理を簡単に追加できます。

また、2つのブックが開いている場合には、これを使用するのが最善の方法です。私はあなたが言及した他の方法については検討していませんが、現在サイドバイサイドモードにある2つのワークブックを識別する方法が存在することがあります。その時点でコードはforループを解き、より簡潔になります。

+0

ありがとう、Mr.Reband、ワークシートをアクティブにするコードスニペットについては、しかし、私の問題は、サイドバイサイドビューでピアウィンドウを見つけることです。はい、可視ウィンドウ(またはワークブック)が2つしかない場合は簡単です。選択肢はありません。しかし残念なことに、それはいつもそうではありません。 2つのウィンドウを並べて比較し、3番目のファイルの違いを追跡する - これは私が通常仕事で行うことです。 – clumsyman

+0

これを回避するには、比較対象のワークブックの名前を格納するためのプライベートワークブック変数を設定し、 'CompareSideBySideWith'を呼び出し、プライベートブック変数を設定する別のメソッドを記述します。その後、何もループする必要はなく、2つのファイルを比較し、3つ目の違いを追跡することができます。または、Excelの新しいインスタンスを開き、そこに3番目のワークブックを保存することもできます。 –

+0

私が得ることができる最も近いショットは、すべての開いているブックにループし、ワークシートを同じ名前で切り替えることです。つまり、その本にその名前のシートがあるとします。それは理想的ではありませんが、誰も傷つけません:) – clumsyman

関連する問題