Excelでセルを編集するとき、F2キーを押して編集モードに入り、Enterキーで確定する操作を何度も繰り返す場面があります。
たとえば、数式を値に見せかけず内容を確認したいとき、セル末尾へ文字を追加したいとき、複数のセルの表示を再計算させたいときなどです。
手作業では単純でも、対象が数十行から数百行に増えると、F2キーとEnterキーの反復は負担になりやすい作業です。
そこで便利なのが、VBAマクロで対象セルを順番に処理する方法です。
F2キーとEnterキーの操作は、VBAではセルを選択して再設定する処理に置き換えられます。
数式を持つセル、文字列を入力し直したいセル、空白を削除したいセルなど、目的に応じてマクロの内容を変えられます。
この記事では、エクセルでF2キーとEnterを一括実行するマクロの基本から、安全に使うための注意点までを解説します。
サンプルデータは1行目をヘッダー行として、2行目以降を処理対象にする前提です。
エクセルでF2キーとEnterを一括実行するマクロ
それではまず、複数セルに対してF2キーとEnterキーに近い処理を行う基本マクロについて解説していきます。
| A | B | C |
|---|---|---|
| 商品名 | 単価 | 税込価格 |
| ノート | 120 | =B2*1.1 |
| ペン | 150 | =B3*1.1 |
F2キーを押してEnterキーで確定すると、Excelは現在のセル内容を改めて受け取り、必要に応じて再計算や書式の反映を行います。
マクロでは、セルの数式または値を同じセルへ代入し直すことで、似た目的の処理をまとめて実行できます。
数式セルを再設定するVBA
数式が入った範囲を対象にする場合は、Formulaプロパティを利用する方法が分かりやすい選択です。
セルに保存されている数式を取得し、そのまま同じセルへ書き戻します。
数式の再設定は、F2キーを押してEnterで確定する操作を連続で行いたいケースに適しています。
Sub F2EnterForFormulas()
Dim targetRange As Range
Dim cell As Range
Set targetRange = Range("C2:C100")
For Each cell In targetRange
If cell.HasFormula Then
cell.Formula = cell.Formula
End If
Next cell
End Sub
このコードではC2からC100までを確認し、数式が入力されているセルだけを処理します。
1行目の見出しは対象外なので、ヘッダーを壊す心配を減らせます。
対象列を変更したい場合は、RangeのC2:C100を実際のデータ範囲へ書き換えましょう。
数式セルだけを対象にしたい場合は、HasFormulaで条件を付けるのが安全です。
値だけが入ったセルまで処理すると、意図しない表示形式の変化やデータ更新につながるかもしれません。
値を入力し直すVBA
文字列や数値が入力されたセルに対して、編集確定に近い処理を実行したい場合もあります。
このときはValueプロパティを利用して、現在の値を同じセルへ代入します。
特に、外部システムから貼り付けたデータを整えた後に、対象セルをまとめて確定し直したいときに便利です。
Sub F2EnterForValues()
Dim targetRange As Range
Dim cell As Range
Set targetRange = Range("A2:A100")
For Each cell In targetRange
If cell.Value <> "" Then
cell.Value = cell.Value
End If
Next cell
End Sub
空白セルは処理しないようにしているため、余計な操作を避けられます。
セル内の先頭ゼロが必要なコードや、日付として見せたくない番号は、実行前に表示形式を確認することが重要です。
値の再代入では、セルの内容そのものが書き直されます。
文字列として保持したいデータは、対象範囲を限定して使いましょう。
選択範囲だけを処理するVBA
毎回同じ列や同じ行数を処理するとは限りません。
そのような場合は、あらかじめマウスで選択したセルだけを処理するマクロが扱いやすくなります。
作業者が必要な場所を選んでから実行できるため、汎用性が高い形です。
Sub F2EnterForSelection()
Dim cell As Range
For Each cell In Selection
If cell.HasFormula Then
cell.Formula = cell.Formula
ElseIf cell.Value <> "" Then
cell.Value = cell.Value
End If
Next cell
End Sub
選択範囲の中に数式セルと値セルが混在していても、それぞれに応じた処理を実行できます。
ただし、図形やグラフなどセル以外を選択している状態では実行エラーになる可能性があります。
マクロを実行する前には、必ずセル範囲が選択されていることを確認しましょう。
【操作のポイント】最初は少ないセルで試し、期待通りに処理されることを確認してから広い範囲へ実行します。

VBAエディターへのマクロ登録
続いては、作成したコードをExcelへ登録し、実際に実行できる状態にする手順を確認していきます。
| 操作順 | 実行内容 | 目的 |
|---|---|---|
| 1 | AltキーとF11キー | VBAエディターを開く |
| 2 | 標準モジュールを挿入 | コードの保存先を作る |
| 3 | コードを貼り付ける | マクロを登録する |
VBAのコードは通常のワークシートではなく、VBAエディター内の標準モジュールに保存します。
Excelを再起動しても使い続けるには、ファイル形式にも注意が必要です。
VBAエディターを開く操作
Excelを開いた状態でAltキーを押しながらF11キーを押すと、Visual Basic Editorが開きます。
リボンの開発タブが表示されている場合は、開発タブにあるVisual Basicから開く方法でも構いません。
開発タブが見当たらないときは、ファイル、オプション、リボンのユーザー設定から表示を有効にできます。
AltキーとF11キーは、VBAの編集画面を素早く開く代表的なショートカットです。
左側にプロジェクトエクスプローラーが表示され、現在開いているブックが一覧に出ます。
目的のブックを間違えると別ファイルへマクロを登録してしまうため、ファイル名を確認しましょう。
標準モジュールの挿入
プロジェクトエクスプローラーで対象ブックを選択したら、上部メニューの挿入から標準モジュールを選びます。
Module1などの項目が作成され、右側に白いコード入力画面が表示されます。
ここへ先ほどのSubからEnd Subまでを貼り付けます。
シートごとのイベント処理ではない通常のマクロは、標準モジュールへ保存するのが基本です。
VBAのSubは、実行できる処理のまとまりです。
Sub F2EnterForSelectionのような名前は、マクロ一覧に表示されるため、用途が分かる英数字の名称にします。
日本語の名称も使用できますが、他の担当者へ引き継ぐファイルでは英語やローマ字を含めた分かりやすい命名が便利です。
マクロ有効ブックでの保存
通常のxlsx形式で保存すると、VBAコードは保存されません。
マクロを残すには、名前を付けて保存からExcelマクロ有効ブックを選び、拡張子をxlsmにします。
保存時にマクロを含まない形式について警告が表示された場合は、xlsm形式へ変更して保存しましょう。
コードを書いた直後にxlsx形式で上書き保存すると、せっかく作成したマクロが失われます。
共有先のPCで開く予定がある場合は、マクロ有効ブックであることも伝えておくと親切です。
ファイル名に作成日や用途を入れておくと、複数のマクロブックを管理しやすくなります。
【操作のポイント】コードを保存したら、一度Excelを閉じて開き直し、AltキーとF8キーのマクロ一覧に表示されるか確認します。

対象範囲を自動判定するVBA
続いては、入力済みの最終行を探し、データ量に合わせてF2キーとEnter相当の処理を実行する方法を確認していきます。
| 行番号 | A列 | C列 |
|---|---|---|
| 1 | 商品名 | 税込価格 |
| 2 | ノート | =B2*1.1 |
| 3 | ペン | =B3*1.1 |
| 4 | 消しゴム | =B4*1.1 |
固定のC2:C100という指定は簡単ですが、データ件数が毎回変わる場合には範囲の修正が必要です。
最終行を自動取得するマクロなら、データが増減しても同じコードを使えます。
最終行を取得する考え方
最終行とは、対象列で最後にデータが入っている行番号です。
A列の商品名が必ず入力される表なら、A列を基準にして最終行を求めるのが一般的です。
最終行の取得式
Cells(Rows.Count, “A”).End(xlUp).Row
Rows.Countはシート内の最終行番号を表し、A列の最終セルから上方向へ移動して最後の入力セルを探します。
そこで得られた行番号が、処理対象の終点です。
データ表の途中に空白行がある場合でも、最終行の判定自体は最後に入力されたセルを基準にできます。
ただし、A列が空欄になる可能性がある帳票では、必ず入力される別の列を基準に選びましょう。
可変範囲へ数式を再設定するコード
次のマクロは、A列の最終行を確認し、その行までのC列にある数式を再設定します。
ヘッダーが1行目にあるため、開始位置はC2です。
Sub RefreshFormulasToLastRow()
Dim lastRow As Long
Dim targetRange As Range
Dim cell As Range
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
Set targetRange = Range("C2:C" & lastRow)
For Each cell In targetRange
If cell.HasFormula Then
cell.Formula = cell.Formula
End If
Next cell
End Sub
たとえばA列の最終入力が250行目なら、C2からC250までが処理範囲になります。
データが4行目までしかない場合は、C2からC4だけが対象です。
この仕組みにより、毎回コード内の行番号を書き換える手間を減らせます。
処理対象の列を増やす方法
数式がC列だけでなく、D列からF列にも入力されていることがあります。
その場合は、対象範囲をC2:Fと最終行を組み合わせた形へ変更します。
Set targetRange = Range("C2:F" & lastRow)
複数列を一度に処理できる一方で、値を固定している列まで含めないように注意が必要です。
対象範囲は広げるほど便利ですが、誤って上書きする範囲も広がります。
実行前に対象範囲を黄色で塗りつぶす、または名前ボックスで範囲を確認する習慣を付けると安心です。
【操作のポイント】最終行を判断する基準列は、途中で空白にならない列を選びます。

マクロ実行とショートカットキーの設定
続いては、登録したマクロを実行し、F2キーとEnterの反復作業を素早く置き換える操作を確認していきます。
| 操作 | キーまたは画面 | 内容 |
|---|---|---|
| マクロ一覧を開く | AltキーとF8キー | 登録済みマクロを選択 |
| 実行する | 実行ボタン | 選択範囲または指定範囲を処理 |
| ショートカット登録 | オプションボタン | 任意のキーで呼び出す |
頻繁に使用するマクロは、AltキーとF8キーから実行するだけでも十分に便利です。
さらにショートカットキーを設定すると、作業中にマウスへ持ち替える回数を減らせます。
AltキーとF8キーからの実行
Excelの画面でAltキーとF8キーを押すと、マクロの一覧が開きます。
一覧からF2EnterForSelectionなどのマクロ名を選択し、実行ボタンを押します。
選択範囲を対象とするコードを使う場合は、先にワークシート上で処理したいセルを選択しておくことが大切です。
処理が短時間で終わるマクロでは、実行後に画面の変化が目立たないこともあります。
そのため、最初は数式バーやセル内容を確認し、意図した結果になったかを判断しましょう。
実行するマクロ名が一覧に見つからない場合は、保存先が標準モジュールかどうかを確認します。
ショートカットキーの割り当て
マクロ一覧で対象マクロを選び、オプションボタンを押すとショートカットキーを設定できます。
たとえばCtrlキーとShiftキーとRキーの組み合わせを登録すれば、選択範囲を素早く処理できます。
既存のExcelショートカットと重なる組み合わせを設定すると、通常の機能が使いにくくなる可能性があります。
ショートカットキーは、一般的な保存やコピーの操作と重ならない組み合わせを選びます。
CtrlキーとShiftキーを含めると、既存機能への影響を抑えやすくなります。
ショートカットは便利ですが、誤操作時にも即座に処理されるため、対象範囲の確認を先に行いましょう。
共有ブックでは、他の利用者が同じキー設定を把握していない場合があります。
マクロ名と操作内容をシート内にメモしておくと、後から見直すときに役立ちます。
ボタンから実行する設定
開発タブを利用できる環境なら、フォームコントロールのボタンへマクロを登録する方法もあります。
シート上のボタンをクリックするだけで実行できるため、キーボード操作が苦手な人にも分かりやすい設計です。
ボタンを配置したら、右クリックしてマクロの登録を選び、対象のプロシージャを指定します。
ボタンの表示名は、数式を再設定する、選択範囲を更新するなど、実行結果が分かる言葉にします。
ただし、誤ってクリックする位置にボタンを置くと意図しない処理が起こります。
入力セルや集計表から少し離れた場所に配置するのが実務向きです。
【操作のポイント】初回はAltキーとF8キーで実行し、運用が固まってからショートカットキーやボタンを追加します。
再計算と表示形式の確認
続いては、F2キーとEnterの一括処理後に確認したい再計算、数式、表示形式について解説していきます。
| 確認項目 | 確認内容 | 注意点 |
|---|---|---|
| 数式 | 数式バーの内容 | 値へ変わっていないか |
| 計算結果 | 参照先変更後の結果 | エラー表示の有無 |
| 表示形式 | 日付、通貨、文字列 | 先頭ゼロの消失 |
F2キーとEnterキーの操作は見た目以上に、セルの内容、計算、表示に関係します。
マクロの実行後は、処理が終わったことだけでなく、データが期待通りに保持されているかを確認しましょう。
数式と値の違い
Formulaプロパティで処理したセルは、数式そのものを保持したまま再設定されます。
一方でValueプロパティによる再代入は、数式セルに対して使い方を誤ると計算式ではなく計算結果の値を固定するおそれがあります。
数式を残したい列にはFormulaを使い、入力値だけを扱う列にはValueを使い分けます。
C2セルに=B2*1.1がある場合、Formulaでの再設定後もセルには=B2*1.1が残ります。
Valueで扱うと、計算結果である132がセルへ保存され、B2を変更してもC2は連動しなくなる可能性があります。
この違いは売上表、請求書、在庫管理表のように計算式を多用するブックで特に重要です。
実行前に数式バーを確認し、どの列が数式でどの列が入力値かを把握しておきましょう。
再計算モードの確認
Excelには自動計算と手動計算の設定があります。
手動計算になっているブックでは、数式を再設定しても画面上の結果がすぐ変わらないことがあります。
数式タブの計算方法の設定から、自動になっているかを確認できます。
必要に応じてApplication.Calculateをマクロ末尾に追加し、ブック内の数式を再計算する方法もあります。
Application.Calculate
外部参照や大量の数式を含むブックでは、再計算に時間がかかることがあります。
処理中にExcelが反応しないように見えても、すぐに強制終了せず、計算が終わるまで待つことも必要です。
表示形式を維持する注意点
セルの値を扱うマクロでは、郵便番号、社員番号、商品コードのようなデータに注意します。
00123のような文字列を数値として扱うと、先頭のゼロが消えて123になることがあります。
対象列を文字列形式にしておくか、Valueの代わりにTextの扱いを検討する場面もあります。
日付についても、シリアル値が表示される、年月日の表示が変わるといった問題が起こるかもしれません。
重要な帳票では、実行前にバックアップ用のコピーを保存してからマクロを試すのが基本です。
【操作のポイント】数式を再設定する列と、入力値を再設定する列を混在させず、目的別にマクロを分けます。
エラー防止と安全なマクロ運用
続いては、F2キーとEnter相当のマクロを業務で使うときに知っておきたいエラー防止と安全な運用を確認していきます。
| よくある状況 | 主な原因 | 対処 |
|---|---|---|
| マクロが実行できない | マクロが無効 | xlsm形式とセキュリティ設定を確認 |
| 一部だけ処理されない | 対象範囲の誤り | 開始行と最終行を確認 |
| 値が変わった | FormulaとValueの混同 | バックアップから復元してコード修正 |
VBAは反復作業を短縮できる一方で、広い範囲を一度に処理できるため、設定ミスの影響も大きくなります。
小さなテストから始めることが、安定した自動化への近道です。
処理前のバックアップ
マクロ実行前には、対象ブックを別名保存してコピーを作ることをおすすめします。
元のファイルを残しておけば、想定外の結果になっても比較や復元がしやすくなります。
特にValueを利用するコード、複数シートを操作するコード、大量の行を処理するコードではバックアップが重要です。
テスト用の小さな表でコードを確認し、その後に本番データへ適用します。
本番データでは、処理前後の件数、合計値、数式の有無を比較すると異常に気付きやすくなります。
元に戻す操作だけに頼らず、実行前のファイルを残す運用が安心です。
Excelの元に戻す履歴は、マクロ実行後に利用できない場合があります。
画面更新を止める高速化
数百行から数千行を順番に処理すると、画面の更新によって時間がかかることがあります。
Application.ScreenUpdatingをFalseにすると、マクロ実行中の画面描画を一時的に止められます。
Application.ScreenUpdating = False
'ここに繰り返し処理を記述します
Application.ScreenUpdating = True
処理を高速化しやすい反面、途中でエラーが起きると画面更新が戻らないことがあります。
本格的に使用する場合は、エラー処理を追加して最後にTrueへ戻す構成を検討しましょう。
高速化の設定は、まず通常のマクロが正しく動くことを確認してから追加します。
数十セル程度の処理なら、読みやすさを優先して高速化コードを入れない選択もあります。
マクロのセキュリティ対策
マクロ有効ブックは、信頼できる作成者または信頼できる保存場所から入手したものだけを開きます。
メール添付やインターネットから取得した不明なxlsmファイルでは、安易にコンテンツを有効化しないことが大切です。
社内で利用するブックなら、作成者、用途、変更日、操作方法をシートへ記録しておくと管理しやすくなります。
また、コードにパスワードや個人情報を直接書かない運用も必要です。
便利な自動化ほど、誰が作成し、何を変更するマクロなのかを明確にしておきましょう。
【操作のポイント】マクロを共有するときは、対象シート、対象範囲、実行前のバックアップ手順を一緒に伝えます。
まとめ エクセルでF2キーとEnterを一括実行するマクロの方法
ExcelでF2キーとEnterキーを何度も押す作業は、VBAマクロを使うことで効率化できます。
数式を維持したいセルにはFormulaプロパティを使い、入力済みの値を扱うセルにはValueプロパティを使うことが基本です。
1行目にヘッダーがある表では、処理開始行を2行目に設定することで見出しを対象外にできます。
データ件数が変わる表では、A列などの必須入力列から最終行を取得すると、毎回の範囲修正を減らせます。
マクロの登録はAltキーとF11キーでVBAエディターを開き、標準モジュールへコードを貼り付け、xlsm形式で保存する流れです。
実行時はAltキーとF8キーから始め、操作に慣れてからショートカットキーやボタンの登録を進めると安全です。
まずは数行だけのテストデータで結果を確認してから、実際の業務データへ適用しましょう。
数式が値に置き換わっていないか、先頭ゼロや日付の表示形式が変わっていないかも、実行後に確認したい項目です。
バックアップを残し、対象範囲を限定しながら使えば、F2キーとEnterキーの反復作業を安定して自動化できます。