2013-09-05 31 views
5

"Xem bên cạnh" và "Cuộn đồng bộ" giúp so sánh 2 bảng tính dễ dàng hơn bao giờ hết. Tuy nhiên, không có tính năng "tab Chuyển đổi đồng bộ", vì vậy nếu tôi chuyển sang một tab khác trong một trong các sổ làm việc và tiếp tục cuộn, cuộn được đồng bộ hóa trở nên khá buồn cười.tìm hiểu các cửa sổ ở chế độ cạnh nhau

Vâng, tôi không nên khiếu nại, bởi vì tất cả được thực hiện thủ công và tôi nên sử dụng tính năng này một cách khôn ngoan.

Là một nhà phát triển lười biếng, tôi muốn viết một số mã để tự khai thác: Tôi có thể viết macro để tự động chuyển đổi bảng tính trên cửa sổ ngang hàng trong chế độ song song không?

Nó phá vỡ xuống 2 bước sau:

  1. làm thế nào để tôi biết nếu một cửa sổ, nhiều khả năng các ActiveWindow, đang ở chế độ side-by-side?
  2. nếu có, làm cách nào để biết cửa sổ nào là ngang hàng?

Tôi đã làm bài tập về nhà của mình. Có vẻ như Excel không thân thiện với lập trình trên tính năng này. Có 3 phương pháp

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

và 1 tài sản Boolean

  • SyncScrollingSideBySide

trên bộ sưu tập Windows liên quan đến tính năng này, nhưng không đủ để giải quyết các câu hỏi của tôi.

Có ai có ý tưởng nào về cách đạt được điều này không? Hoặc, nó thực sự là không thể? Cảm ơn bạn trước.

Trả lời

0

Bạn có thể đạt được điều này bằng cách sử dụng sự kiện Workbook_SheetActivate:

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

nếu bạn đặt mã này trong Object ThisWorkbook của bạn, sau đó mỗi lần bạn thay đổi bảng hoạt động, nó sẽ ...

  1. Chu kỳ qua tất cả các sổ làm việc mở với một tên khác
  2. Tìm một trang tính có cùng tên với trang tính bạn vừa nhấp vào
  3. Kích hoạt bảng tính trong Workbook khác

    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 
    

Lưu ý rằng điều này đòi hỏi bảng tính để tồn tại trong tất cả các workbook mở. Một lỗi sẽ xảy ra nếu không. Tuy nhiên, bạn có thể dễ dàng thêm xử lý lỗi để bỏ qua sổ làm việc với các trang tính tương ứng không liên quan.

Cũng lưu ý rằng tốt nhất nên sử dụng điều này khi chỉ có hai sổ làm việc đang mở.Tôi đã không xem xét các phương pháp khác mà bạn đã đề cập, nhưng có thể tồn tại một cách để xác định hai sổ làm việc hiện đang ở chế độ song song, tại thời điểm đó mã có thể đổ vòng lặp của nó và trở nên ngắn gọn hơn.

+0

Cảm ơn, Mr.Reband, cho đoạn mã Kích hoạt trang tính. Tuy nhiên, vấn đề của tôi là tìm ra cửa sổ ngang hàng ở chế độ xem song song. Có, sẽ dễ dàng hơn nếu chỉ có 2 cửa sổ hiển thị (hoặc sổ làm việc) - không có lựa chọn nào là lựa chọn tốt nhất. Nhưng thật không may, nó không phải lúc nào cũng như thế. So sánh 2 cửa sổ cạnh nhau và theo dõi sự khác biệt trong tệp thứ 3 - đây là những gì tôi thường làm ở nơi làm việc. – clumsyman

+0

Bạn có thể giải quyết vấn đề này bằng cách có một biến sổ làm việc riêng để lưu trữ tên của sổ làm việc được so sánh, sau đó viết một phương thức riêng gọi là 'CompareSideBySideWith' và cũng đặt biến sổ làm việc riêng. Sau đó, bạn sẽ không cần phải lặp lại bất cứ điều gì, và bạn có thể so sánh 2 tập tin và theo dõi sự khác biệt trong một thứ 3. Ngoài ra, bạn có thể mở một phiên bản Excel mới và giữ sổ làm việc thứ 3 của bạn ở đó. –

+0

Dường như ảnh gần nhất tôi có thể nhận là lặp lại tất cả các sổ làm việc đang mở và chuyển đổi trang tính có cùng tên. Đó là nói rằng, nếu cuốn sách có một tờ với tên đó. Nó không phải là lý tưởng, nhưng tôi đoán nó sẽ không làm tổn thương bất cứ ai :) – clumsyman

Các vấn đề liên quan