VBA – ウィンドウ枠を固定する
VBAを使ったウィンドウ枠の固定
先日、Excelのウィンドウ枠の固定について投稿しましたが、VBAを使った方法を紹介します。
先頭行を固定する
Rows("1:1").Select
ActiveWindow.FreezePanes = True
先頭列を固定する
Range("A:A").Select
ActiveWindow.FreezePanes = True
行と列を固定する
Range("B2").Select
ActiveWindow.FreezePanes = True
ウィンドウ枠の固定を解除する
ActiveWindow.FreezePanes = False
ウィンドウ枠を固定したままではワークブックを保存できないようにする
Excelでは、イベントによって物事をコントロールすることができます。この記事では、イベントの種類や機能についての詳細な議論をするわけではありません。その代わり、ワークブックのイベントの例を挙げます。これらは、特定のワークシートではなく、ワークブックレベルで保持されるイベントです。
VBAを通じて、印刷前や保存前など、特定のイベントで何が起こるかを制御することができます。私が直面している共通の問題の1つは、一緒に仕事をしている多くの人が、ウィンドウ枠が固定されたシートのあるファイルを好まないということです。
そこで、この記事では、ウィンドウ枠が固定されているかどうかをチェックし、固定されていればファイルを保存しないようにするコードをいくつかまとめます。つまり、私はウィンドウ枠の固定が解除された状態でファイルを保存しなければなりません。
ワークブックイベントに関して最も重要なことは、正しい場所(ワークブックレベル)に保存することです。
ワークブックレベルのコードにアクセスするには、次の手順に従ってください。
1. Excelワークシートタブの上で右クリックし、[コードの表示]を選択します。
2. Visual Basic Editorが表示されます。
3. ThisWorkbookをダブルクリックし、右側のコードペインの1つ目のドロップダウンからWorkbookを選択します。
すると右側のドロップダウンの値がOpenに変わり、Workbook_Open イベントのコードが表示されます。このコードによって、ワークブックが初めて開かれたときに何が起こるかを確認することができます。
しかし、今回はワークブックを保存するときの動作を制御したいので、右側のドロップダウンをBeforeSaveに変更します。すると、画面は次のようになります。
ここで、宣言の後に以下のコードを挿入します。
If ActiveWindow.FreezePanes = True Then
MsgBox "ウィンドウ枠が固定されています - ファイルは保存されません"
Cancel = True
End If
これで、完全なコードは次のようになる。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If ActiveWindow.FreezePanes = True Then
MsgBox "ウィンドウ枠が固定されています - ファイルは保存されません"
Cancel = True
End If
End Sub
ファイルを保存した後、任意のウィンドウでフリーズペインを有効にします。その状態でファイルを再保存しようとしても、msgboxにウィンドウ枠が固定されていることが表示され、ファイルは保存されません。
そしてウィンドウ枠の固定が解除されるまで、ファイルは保存できないままになります。
VBAのコーディングが簡単に
VBAのコードをオンラインで検索するのはもうやめましょう。AutoMacro – A VBA Code Builderは、初心者が最小限のコーディング知識でゼロからコーディングできるだけでなく、すべてのユーザーにとって時間を節約するのに役立つ多くの機能を備えています! もっと詳しく