異なるワークシートで同じセルを表示する(Microsoft Excel)
複数のワークシートを使用する場合、Chrisは、すべてのワークシートのスクロールを「ロック」する方法があるかどうか疑問に思います。たとえば、行100〜140と列G〜Pが表示されるまでSheet1を下にスクロールして横切る場合、Sheet2(または他のワークシート)に切り替えると、同じ行と列がそれらに表示されるようにします。ワークシート。
このタスクを実行する唯一の方法は、マクロを使用することです。何が起こらなければならないかというと、マクロは、シートが非アクティブ化された(残っている)ときに表示される行と列を判別し、アクティブ化されたシート(これから移動するシート)の表示を同じ行と列に設定する必要があります。 ThisWorkbookモジュールに追加された次のマクロは、まさにこのタスクを実行します。
Dim grngSelection As Range Dim gintScrollColumn As Integer Dim glngScrollRow As Long Private Sub Workbook_SheetActivate(ByVal Sh As Object) If TypeName(ActiveSheet) = "Worksheet" Then On Error Resume Next With ActiveWindow Sh.Range(grngSelection.Address).Select .ScrollColumn = gintScrollColumn .ScrollRow = glngScrollRow End With End If End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) Dim oSheet As Object If TypeName(Sh) = "Worksheet" Then Set oSheet = ActiveSheet Application.EnableEvents = False Sh.Activate With ActiveWindow gintScrollColumn = .ScrollColumn glngScrollRow = .ScrollRow Set grngSelection = .RangeSelection End With oSheet.Activate Application.EnableEvents = True End If End Sub
イベントハンドラーの外部での変数の使用に注意してください。これらの変数は、列、行、および選択された領域の値をSheetDeactivateハンドラーからSheetActivateハンドラーに渡すために使用されます。
もちろん、自動ソリューションは必要ないかもしれません。代わりに、ワークシートが同期されているかどうかをトリガーする特定の手順をユーザーに実行させたい場合があります。これは、ワークブックの通常のモジュールに次のマクロを追加することで実行できます。
Global WindowScrollRow Global WindowScrollCol Global WindowSyncOn As Boolean Public Sub WindowLock() If Not WindowSyncOn Then WindowScrollRow = ActiveWindow.VisibleRange.Row WindowScrollCol = ActiveWindow.VisibleRange.Column Application.StatusBar = "WindowSync: ON" Else Application.StatusBar = "" End If WindowSyncOn = Not WindowSyncOn End Sub
このマクロが行うことは、グローバル変数WindowSyncOnのステータスをチェックすることだけです。値がFalseの場合、一番上の表示行と一番左の表示列の現在の設定がグローバル変数に格納されます。これらの変数の設定は、ThisWorkbookモジュールに追加された次のイベントハンドラーによって使用されます。
Private Sub Workbook_SheetActivate(ByVal Sh As Object) If WindowSyncOn Then If Not ActiveWindow Is Nothing Then ActiveWindow.ScrollRow = WindowScrollRow ActiveWindow.ScrollColumn = WindowScrollCol End If End If End Sub
マクロは単にWindowSyncOn変数の設定をチェックし、それがTrue(設定済み)の場合、マクロはアクティブなウィンドウの上部と左側にある行と列を設定します。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(3860)は、Microsoft Excel 97、2000、2002、および2003に適用されます。