3

通常、ペインのフリーズを解除するコードは次のとおりです。

ActiveWindow.FreezePanes = False

しかし、WorkbookタイプのsourceBookとStringタイプのsheetNameがあるとします。例えば

sourceBook.sheets(sheetName)

ActiveWindowなどを呼び出さずに、そのブックのシートのペインのフリーズを解除するにはどうすればよいですか?

4

3 に答える 3

2

これにより、特定のブックのすべてのウィンドウのすべてのシートからFreezePanesが削除されます。また、コードを実行する前にアクティブだったのと同じワークシートがアクティブになっていることも確認されます。

Dim w As Window
Dim activews As Worksheet, ws As Worksheet
For Each w In sourceBook.Windows
    w.Activate
    If activews Is Nothing Then
        Set activews = w.ActiveSheet
    End If
    For Each wsv In w.SheetViews
        wsv.Sheet.Activate
        w.FreezePanes = False
    Next
    activews.Activate
    set activews = nothing
Next

Rickが示したように、ウィンドウをアクティブ化せずにペインのフリーズを解除することはできません。ただし、を呼び出す必要はありませんActiveWindow

于 2012-12-06T21:52:20.460 に答える
1

残念ながら、フリーズペインはウィンドウオブジェクトのメソッドであり、それを適用するシートはアクティブシートである必要があります。これは、アクティブなウィンドウのペインのみをフリーズするセルを選択する必要があることを意味します。

于 2012-12-06T21:46:22.627 に答える
0

シートのアクティブ化イベントにコードを追加します(たとえば、これはSheet1の下のコードです)

Option Explicit
Private Sub Worksheet_Activate()
    ActiveWindow.FreezePanes = False
End Sub
于 2012-12-06T21:53:29.810 に答える