Excel VBAのカウンタ値を保存して再起動後も続きから番号を増やす方法

Visual Basic

Excel VBAでボタンを押すたびにセルの数字を1ずつ増やす仕組みは、簡単なカウンター機能としてよく利用されます。ただし、作成したマクロがセルの値だけを利用している場合、Excelを閉じても値が残るのか、再度開いたときに続きから始められるのかが気になるところです。

この記事では、VBAで作ったカウンターをExcel終了後も保持する方法や、セルを使った保存方法、より安全に管理する方法について解説します。

Excel VBAのセルカウンターは閉じても続きから使えるのか

結論として、現在のコードのようにセルへ直接数字を書き込んでいる場合は、Excelファイルを保存すれば次回起動時も続きの番号から開始できます。

例えば、ボタンを3回押してA1セルが「3」になった状態でExcelファイルを保存します。その後ファイルを閉じて再び開くと、A1セルには「3」が残っているため、次にボタンを押した場合は「4」と表示されます。

一方で、Excelファイルを保存せずに閉じた場合は変更内容が破棄されるため、以前保存した状態に戻ります。VBAのカウンター値を維持したい場合は、必ずファイルを保存することが重要です。

現在のVBAコードで番号を継続できる理由

提示されているコードでは、カウンターの数字をVBA内部の変数ではなく、ワークシートのA1セルに保存しています。

VBAの変数で管理した場合、Excelを終了するとメモリ上の情報は消えてしまいます。しかし、セルに書き込まれたデータはファイルの保存対象になるため、次回開いたときにも利用できます。

例えば以下のような動作になります。

操作 A1セルの値
Excel起動時 5
ボタンを押す 6
保存して終了 6の状態を保存
再起動後 6から再開

保存忘れを防ぐならVBAで自動保存する方法もある

ボタン操作のたびに保存する必要がある場合は、マクロ側で自動保存を設定する方法もあります。

例えば、番号を増やした直後に以下のように保存処理を追加できます。

Sub CommandButton1_Click()
With ThisWorkbook.Worksheets(“Sheet1”).Range(“A1”)
If IsNumeric(.Value) And .Value <> “” Then
.Value = .Value + 1
Else
.Value = 1
End If
End With
ThisWorkbook.Save
End Sub

このようにすると、ボタンを押して番号が変わるたびにExcelファイルが保存されるため、保存し忘れによるリセットを防げます。

セル以外にカウンターを保存する方法

単純な番号管理であればセル保存で十分ですが、ユーザーに見せたくない管理番号やシステム用のカウント値の場合は別の保存方法もあります。

代表的な方法として、非表示シートや名前の定義、Excelの設定情報を利用した保存などがあります。

例えば、入力用シートとは別に「管理用」シートを作成し、そこへ現在の番号だけを保存しておけば、利用者に意識させずにカウンターを管理できます。

注意したいExcelファイル形式について

VBAを使用する場合は、ファイル形式にも注意が必要です。通常のExcelブック形式である「.xlsx」ではマクロを保存できないため、「.xlsm」のマクロ有効ブックとして保存する必要があります。

また、共有フォルダなどで複数人が同じファイルを操作する場合、同時編集によって番号が重複する可能性があります。その場合はデータベースや専用の管理方法を検討すると安全です。

個人利用や1人で管理する番号カウンターであれば、現在のようにセルへ値を保存する方法が最も簡単で安定しています。

まとめ

Excel VBAでボタンを押すたびに番号を増やすカウンターは、セルに値を書き込む方式であれば、Excelファイルを保存することで次回起動後も続きから利用できます。

今回のようなA1セルを利用したコードの場合、3まで進めて保存すれば、次回は4から開始できます。ただし保存しないまま終了すると変更内容は失われるため注意が必要です。

確実に番号を保持したい場合は自動保存を追加したり、用途に応じて専用の保存場所を用意したりすると、より安全なカウンター機能を作成できます。

コメント

タイトルとURLをコピーしました