私が最初に感動したExcel VBA|ClearContentsで入力欄をボタン1つでリセットする方法

Excel VBA業務改善

私が最初に感動したExcel VBA|ClearContentsで入力欄をボタン1つでリセットする方法

※この記事には広告・アフィリエイトリンクを含みます

導入:私が最初に感動したVBAがClearContentsでした

私がExcel VBAを学び始めて、一番最初に覚えたのが ClearContents でした

正直に言うと、最初は難しいコードなど全く分かりませんでした

それでも、指定したセルの中身をボタン1つで消せる

たったそれだけのことに、ものすごく感動したのを覚えています

それまでは、毎日使う売上表、在庫管理表、日報、出荷確認表などの入力欄を、手作業でDeleteキーを押して消していました

昨日のデータを消して、新しいデータを入れる

それだけの作業なのに、忙しい時ほど消し忘れたり、逆に消してはいけない場所まで消してしまう不安がありました

でも ClearContents を覚えた時、

「これならボタン1つで初期化できる」
「毎日の作業が少し楽になる」
「Excelは自分で便利に変えられるんだ」

そう感じました

私にとって ClearContents は、ただの消去コマンドではありません

VBAで仕事のやり方を変えられると初めて実感した、最初の一歩でした

前日のデータをDeleteキーで消していませんか?

毎日使うExcel表で、新しいデータを入力する前に、前日のデータを手作業で消していませんか?

現場ではよくある作業です

B列の商品名を消す
数量欄を消す
日付を消す
納品先を消す
備考欄を消す

しかし、この手作業には大きなリスクがあります

それは、間違って消してはいけないセルまで消してしまうことです

特に怖いのが、計算式が入っているセルを消してしまうことです

集計式、合計式、参照式が壊れたことに気づかないまま次のデータを入力すると、後から数字が合わなくなることがあります

「なぜ合計が合わないのか」
「昨日までは正しかったのに」
「どこで式が消えたのか分からない」

こうなると、原因を探すだけで大きな時間を取られます

だからこそ、入力欄を安全にリセットする仕組みは、現場のExcel業務にとってとても大切です

ClearContentsとは?

ClearContents は、指定したセル範囲の中身を消すVBAです

たとえば、B2からD10までのセルを消したい場合は、次の1行で実行できます

Range("B2:D10").ClearContents

この1行を実行すると、指定した範囲の中身が消えます

セルの色、罫線、幅などの見た目は基本的にそのまま残ります

そのため、毎日使う入力フォームや日報の初期化に使いやすいコードです

ただし、ここで重要な注意点があります

ClearContents は、指定した範囲に数式が入っている場合、その数式も消します

つまり、数式を残したい場合は、数式が入っているセルを範囲に含めないことが大切です

または、後ほど紹介する「入力値だけを消す安全コード」を使う必要があります

ClearContents・Clear・ClearFormatsの違い

Excel VBAには、セルを消す命令がいくつかあります

初心者の方が混乱しやすいので、違いを整理します

コマンド消えるもの実務での使い方
ClearContents値・文字・数式入力欄の中身を消したい時
Clear値・数式・書式など全体セルを完全に白紙にしたい時
ClearFormats書式色や罫線など見た目だけ消したい時

実務で毎日使う入力フォームをリセットするなら、まず覚えるべきは ClearContents です

ただし、数式があるセルまで範囲に入れないこと

ここだけは必ず注意してください

コピペで使える基本コード

まずは一番シンプルなコードです

B2からD10までをリセットします

Sub 入力データをリセットする()

    '指定した範囲の中身を消去します
    Range("B2:D10").ClearContents

End Sub

このコードはとても短いですが、実務では十分役に立ちます

たとえば、B2からD10までが毎日手入力する欄であれば、ボタン1つで一気に消すことができます

ただし、この範囲内に数式がある場合は、その数式も消えてしまいます

そのため、最初は必ずコピーしたExcelファイルでテストしてください

飛び飛びの入力欄をまとめて消すコード

現場のExcel表では、入力欄が1か所にまとまっていないこともあります

たとえば、B2からB5と、D2からD5だけを消したい場合です

その場合は、カンマで範囲を区切ります

Sub 飛び飛びの入力欄をリセットする()

    '離れた複数の範囲を同時に消去します
    Range("B2:B5,D2:D5").ClearContents

End Sub

このように書けば、離れた入力欄も一度にリセットできます

毎日同じ場所を消しているなら、このコードだけでも作業時間を減らせます

数式を残して入力値だけを消す安全コード

ここからが実務では特に大切です

もし入力欄の近くに数式がある場合、単純に ClearContents を使うと数式まで消してしまう可能性があります

そのリスクを減らすために、手入力された値だけを消すコードを使います

Sub 入力値だけを安全にリセットする()

    Dim 対象範囲 As Range
    Dim 回答 As VbMsgBoxResult

    Set 対象範囲 = Range("B2:D10")

    回答 = MsgBox("入力されたデータだけを削除して初期化します。よろしいですか?", _
                   vbYesNo + vbQuestion, "確認")

    If 回答 <> vbYes Then Exit Sub

    On Error Resume Next
    対象範囲.SpecialCells(xlCellTypeConstants).ClearContents
    On Error GoTo 0

    MsgBox "入力値のリセットが完了しました。", vbInformation, "完了"

End Sub

このコードでは、B2からD10の範囲内にある手入力の値だけを消します

数式が入っているセルは残せるため、通常の ClearContents より安全に使えます

ただし、Excelの表の作り方によって動き方は変わるため、必ず本番ファイルではなくコピーしたファイルで試してください

確認メッセージを入れる理由

VBAでデータを消す時に注意したいことがあります

それは、マクロで消したデータは、基本的にCtrl + Zで元に戻せないことです

手作業でDeleteキーを押した時と違い、マクロ実行後は元に戻せない場合があります

そのため、実務で使うなら、確認メッセージを入れることをおすすめします

「本当に消してよいですか?」

この一言が出るだけで、押し間違いのリスクを減らせます

現場で他の人も使うExcelなら、なおさら大切です

自分だけが使うマクロではなく、誰が押しても安心して使える仕組みにする

これが業務改善では重要です

ボタンに登録してワンクリックで使う方法

VBAは、ボタンに登録すると一気に使いやすくなります

毎回マクロ一覧から実行するより、Excelシート上にボタンを置いておく方が現場向きです

手順は以下です

  1. Excelを開く
  2. ファイルを「Excel マクロ有効ブック」で保存する
  3. Alt + F11 を押す
  4. VBA画面で「挿入」→「標準モジュール」を選ぶ
  5. コードを貼り付ける
  6. Excel画面に戻る
  7. 上部メニューの「開発」タブを開く
  8. 「挿入」→「フォームコントロールのボタン」を選ぶ
  9. シート上にボタンを配置する
  10. 登録するマクロを選ぶ
  11. ボタン名を「入力欄リセット」に変更する

これで、ボタンを押すだけで入力欄をリセットできます

私が最初に感動したのも、この瞬間でした

それまで手で消していた作業が、ボタン1つで終わる

小さなことに見えるかもしれません

でも毎日やっている作業なら、この小さな改善が大きな時短になります

私がClearContentsで感じたこと

VBAを学ぶ前の私は、Excelは「入力するもの」だと思っていました

決められた表に数字を入れる
必要な場所を消す
印刷する
保存する

そういう使い方が当たり前だと思っていました

でも ClearContents を覚えたことで、Excelは自分で使いやすく変えられるものだと分かりました

ボタン1つで入力欄が消える

それだけで、毎日の作業が少し楽になる

この感覚は、VBAを学んだ人にしか分からないかもしれません

難しいシステムを作ったわけではありません

でも、自分の仕事を自分で変えられた

その感覚が、私にとっては大きな一歩でした

50代からVBAを学ぶなら、最初は小さな感動でいい

50代からVBAを学ぶ時、いきなり大きなシステムを作ろうとしなくて大丈夫です

最初は、今日の作業が少し楽になるだけで十分です

入力欄を消す
印刷プレビューを出す
別シートへ転記する
ファイル名を自動で付ける

このような小さな自動化を1つ覚えるだけでも、仕事の見え方は変わります

私にとって、その最初の1つが ClearContents でした

もし今、Excel作業に不便さを感じているなら、まずは入力欄をリセットするボタンから作ってみてください

そこからVBAの面白さが見えてきます

VBAを基礎から学びたい方へ

今はAIに聞けば、VBAコードを作ることもできます

それはとても便利です

しかし、基礎をまったく知らないままコードだけを貼り付けると、エラーが出た時に止まってしまいます

どこを直せばいいのか
どの範囲を変えればいいのか
数式が消える危険はないのか

そこが分からないと、実務では使い続けることが難しくなります

私自身、WINスクールでVBAを学んだことで、コードの意味を少しずつ理解できるようになりました

最初に覚えた ClearContents のような小さなコードでも、基礎を知っていると応用しやすくなります

▼50代からExcel VBAを基礎から学びたい方はこちら
WINスクールでExcel VBA講座を確認する

また、私が50代でWINスクールに通った理由は、こちらの記事にまとめています

▶ 50代でWINスクールに通った理由|Excel VBAで物流業務を変えた実体験

まとめ

今回紹介した ClearContents は、VBAの中でもとてもシンプルなコードです

しかし、私にとってはVBAの可能性を初めて感じた大切な一歩でした

手作業でDeleteキーを押していた入力欄が、ボタン1つで消える

それだけで、Excelはただの入力表ではなく、自分の仕事を助けてくれる道具に変わりました

ただし、ClearContents は指定範囲に数式があれば数式も消します

だからこそ、入力欄だけを指定すること、または入力値だけを消す安全コードを使うことが大切です

最初から難しいVBAを覚える必要はありません

まずは、毎日使うExcelに小さな初期化ボタンを1つ作ってみてください

その小さな一歩が、業務改善の始まりになります

▼Excel VBAを基礎から学びたい方はこちら
[ここにWINスクールのアフィリエイトリンクを設置]※この記事には広告・アフィリエイトリンクを含みます

導入:私が最初に感動したVBAがClearContentsでした

私がExcel VBAを学び始めて、一番最初に覚えたのが ClearContents でした

正直に言うと、最初は難しいコードなど全く分かりませんでした

それでも、指定したセルの中身をボタン1つで消せる

たったそれだけのことに、ものすごく感動したのを覚えています

それまでは、毎日使う売上表、在庫管理表、日報、出荷確認表などの入力欄を、手作業でDeleteキーを押して消していました

昨日のデータを消して、新しいデータを入れる

それだけの作業なのに、忙しい時ほど消し忘れたり、逆に消してはいけない場所まで消してしまう不安がありました

でも ClearContents を覚えた時、

「これならボタン1つで初期化できる」
「毎日の作業が少し楽になる」
「Excelは自分で便利に変えられるんだ」

そう感じました

私にとって ClearContents は、ただの消去コマンドではありません

VBAで仕事のやり方を変えられると初めて実感した、最初の一歩でした

前日のデータをDeleteキーで消していませんか?

毎日使うExcel表で、新しいデータを入力する前に、前日のデータを手作業で消していませんか?

現場ではよくある作業です

B列の商品名を消す
数量欄を消す
日付を消す
納品先を消す
備考欄を消す

しかし、この手作業には大きなリスクがあります

それは、間違って消してはいけないセルまで消してしまうことです

特に怖いのが、計算式が入っているセルを消してしまうことです

集計式、合計式、参照式が壊れたことに気づかないまま次のデータを入力すると、後から数字が合わなくなることがあります

「なぜ合計が合わないのか」
「昨日までは正しかったのに」
「どこで式が消えたのか分からない」

こうなると、原因を探すだけで大きな時間を取られます

だからこそ、入力欄を安全にリセットする仕組みは、現場のExcel業務にとってとても大切です

ClearContentsとは?

ClearContents は、指定したセル範囲の中身を消すVBAです

たとえば、B2からD10までのセルを消したい場合は、次の1行で実行できます

Range("B2:D10").ClearContents

この1行を実行すると、指定した範囲の中身が消えます

セルの色、罫線、幅などの見た目は基本的にそのまま残ります

そのため、毎日使う入力フォームや日報の初期化に使いやすいコードです

ただし、ここで重要な注意点があります

ClearContents は、指定した範囲に数式が入っている場合、その数式も消します

つまり、数式を残したい場合は、数式が入っているセルを範囲に含めないことが大切です

または、後ほど紹介する「入力値だけを消す安全コード」を使う必要があります

ClearContents・Clear・ClearFormatsの違い

Excel VBAには、セルを消す命令がいくつかあります

初心者の方が混乱しやすいので、違いを整理します

コマンド消えるもの実務での使い方
ClearContents値・文字・数式入力欄の中身を消したい時
Clear値・数式・書式など全体セルを完全に白紙にしたい時
ClearFormats書式色や罫線など見た目だけ消したい時

実務で毎日使う入力フォームをリセットするなら、まず覚えるべきは ClearContents です

ただし、数式があるセルまで範囲に入れないこと

ここだけは必ず注意してください

コピペで使える基本コード

まずは一番シンプルなコードです

B2からD10までをリセットします

Sub 入力データをリセットする()

    '指定した範囲の中身を消去します
    Range("B2:D10").ClearContents

End Sub

このコードはとても短いですが、実務では十分役に立ちます

たとえば、B2からD10までが毎日手入力する欄であれば、ボタン1つで一気に消すことができます

ただし、この範囲内に数式がある場合は、その数式も消えてしまいます

そのため、最初は必ずコピーしたExcelファイルでテストしてください

飛び飛びの入力欄をまとめて消すコード

現場のExcel表では、入力欄が1か所にまとまっていないこともあります

たとえば、B2からB5と、D2からD5だけを消したい場合です

その場合は、カンマで範囲を区切ります

Sub 飛び飛びの入力欄をリセットする()

    '離れた複数の範囲を同時に消去します
    Range("B2:B5,D2:D5").ClearContents

End Sub

このように書けば、離れた入力欄も一度にリセットできます

毎日同じ場所を消しているなら、このコードだけでも作業時間を減らせます

数式を残して入力値だけを消す安全コード

ここからが実務では特に大切です

もし入力欄の近くに数式がある場合、単純に ClearContents を使うと数式まで消してしまう可能性があります

そのリスクを減らすために、手入力された値だけを消すコードを使います

Sub 入力値だけを安全にリセットする()

    Dim 対象範囲 As Range
    Dim 回答 As VbMsgBoxResult

    Set 対象範囲 = Range("B2:D10")

    回答 = MsgBox("入力されたデータだけを削除して初期化します。よろしいですか?", _
                   vbYesNo + vbQuestion, "確認")

    If 回答 <> vbYes Then Exit Sub

    On Error Resume Next
    対象範囲.SpecialCells(xlCellTypeConstants).ClearContents
    On Error GoTo 0

    MsgBox "入力値のリセットが完了しました。", vbInformation, "完了"

End Sub

このコードでは、B2からD10の範囲内にある手入力の値だけを消します

数式が入っているセルは残せるため、通常の ClearContents より安全に使えます

ただし、Excelの表の作り方によって動き方は変わるため、必ず本番ファイルではなくコピーしたファイルで試してください

確認メッセージを入れる理由

VBAでデータを消す時に注意したいことがあります

それは、マクロで消したデータは、基本的にCtrl + Zで元に戻せないことです

手作業でDeleteキーを押した時と違い、マクロ実行後は元に戻せない場合があります

そのため、実務で使うなら、確認メッセージを入れることをおすすめします

「本当に消してよいですか?」

この一言が出るだけで、押し間違いのリスクを減らせます

現場で他の人も使うExcelなら、なおさら大切です

自分だけが使うマクロではなく、誰が押しても安心して使える仕組みにする

これが業務改善では重要です

ボタンに登録してワンクリックで使う方法

VBAは、ボタンに登録すると一気に使いやすくなります

毎回マクロ一覧から実行するより、Excelシート上にボタンを置いておく方が現場向きです

手順は以下です

  1. Excelを開く
  2. ファイルを「Excel マクロ有効ブック」で保存する
  3. Alt + F11 を押す
  4. VBA画面で「挿入」→「標準モジュール」を選ぶ
  5. コードを貼り付ける
  6. Excel画面に戻る
  7. 上部メニューの「開発」タブを開く
  8. 「挿入」→「フォームコントロールのボタン」を選ぶ
  9. シート上にボタンを配置する
  10. 登録するマクロを選ぶ
  11. ボタン名を「入力欄リセット」に変更する

これで、ボタンを押すだけで入力欄をリセットできます

私が最初に感動したのも、この瞬間でした

それまで手で消していた作業が、ボタン1つで終わる

小さなことに見えるかもしれません

でも毎日やっている作業なら、この小さな改善が大きな時短になります

私がClearContentsで感じたこと

VBAを学ぶ前の私は、Excelは「入力するもの」だと思っていました

決められた表に数字を入れる
必要な場所を消す
印刷する
保存する

そういう使い方が当たり前だと思っていました

でも ClearContents を覚えたことで、Excelは自分で使いやすく変えられるものだと分かりました

ボタン1つで入力欄が消える

それだけで、毎日の作業が少し楽になる

この感覚は、VBAを学んだ人にしか分からないかもしれません

難しいシステムを作ったわけではありません

でも、自分の仕事を自分で変えられた

その感覚が、私にとっては大きな一歩でした

50代からVBAを学ぶなら、最初は小さな感動でいい

50代からVBAを学ぶ時、いきなり大きなシステムを作ろうとしなくて大丈夫です

最初は、今日の作業が少し楽になるだけで十分です

入力欄を消す
印刷プレビューを出す
別シートへ転記する
ファイル名を自動で付ける

このような小さな自動化を1つ覚えるだけでも、仕事の見え方は変わります

私にとって、その最初の1つが ClearContents でした

もし今、Excel作業に不便さを感じているなら、まずは入力欄をリセットするボタンから作ってみてください

そこからVBAの面白さが見えてきます

VBAを基礎から学びたい方へ

今はAIに聞けば、VBAコードを作ることもできます

それはとても便利です

しかし、基礎をまったく知らないままコードだけを貼り付けると、エラーが出た時に止まってしまいます

どこを直せばいいのか
どの範囲を変えればいいのか
数式が消える危険はないのか

そこが分からないと、実務では使い続けることが難しくなります

私自身、WINスクールでVBAを学んだことで、コードの意味を少しずつ理解できるようになりました

最初に覚えた ClearContents のような小さなコードでも、基礎を知っていると応用しやすくなります

▼50代からExcel VBAを基礎から学びたい方はこちら
WINスクールでExcel VBA講座を確認する

また、私が50代でWINスクールに通った理由は、こちらの記事にまとめています

▶ 50代でWINスクールに通った理由|Excel VBAで物流業務を変えた実体験

まとめ

今回紹介した ClearContents は、VBAの中でもとてもシンプルなコードです

しかし、私にとってはVBAの可能性を初めて感じた大切な一歩でした

手作業でDeleteキーを押していた入力欄が、ボタン1つで消える

それだけで、Excelはただの入力表ではなく、自分の仕事を助けてくれる道具に変わりました

ただし、ClearContents は指定範囲に数式があれば数式も消します

だからこそ、入力欄だけを指定すること、または入力値だけを消す安全コードを使うことが大切です

最初から難しいVBAを覚える必要はありません

まずは、毎日使うExcelに小さな初期化ボタンを1つ作ってみてください

その小さな一歩が、業務改善の始まりになります

▼Excel VBAを基礎から学びたい方はこちら
講師が寄り添うプログラミングスクール

コメント

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