- え、魔法!?Excelでカーソル移動を自動で数えちゃう方法!
- 魔法の正体、VBAって何?(超やさしい解説)
- 魔法の部屋へようこそ!VBAエディターの開き方
- 魔法の呪文を唱える準備:シートに直接呪文を!
- 最初の魔法の呪文(移動回数を数えるコードを紹介と解説)
- 解説
- Private Sub Worksheet_SelectionChange(ByVal t As Range) の解説
- Static r As Range の解説
- Static i As Long の解説
- If Not r Is Nothing Then の解説
- If t.Row <> r.Row Or t.Column <> r.Column Then の解説
- If Abs(t.Row – r.Row) + Abs(t.Column – r.Column) = 1 Then の解説
- i = i + 1 の解説
- ThisWorkbook.Sheets(“Sheet1”).Range(“A1“).Value = i の解説
- End If の解説
- Set r = t の解説
- End Sub の解説
- 解説
- 魔法の呪文を唱える!(コードの書き込みと実行)
- いざ、魔法体験!(動作確認)
- 魔法の応用と次の魔法への期待
- まとめ:魔法の力、ちょっと体験してみませんか?
え、魔法!?Excelでカーソル移動を自動で数えちゃう方法!
Excelを使っている皆さん、こんにちは!
毎日カタカタとセルからセルへ…カーソルを移動していますよね。
「今日、何回くらいカーソル動かしたんだろう?」なんて、ふと思ったことありませんか?
地味な作業だけど、積み重なると結構な回数になっているかも…しれません。
かといって、自分で「いーち、にーい、さーん…」なんて数えるのは、
ちょっと…いや、かなり面倒ですよね!
でも、もしExcelがそれを自動で、まるで魔法みたいに数えてくれたら…?
「そんなことできるの!?」
って思いますよね。
できるんです!
今回は、そんな魔法のようなテクニックを、
Excel初心者の方でもできる方法でご紹介します!
魔法の正体、VBAって何?(超やさしい解説)
「え、自動で…? もしかして何か難しいプログラムとか組むの?」
そんな声が聞こえてきそうですね。
大丈夫、安心してください!
今回使うのは、Excelが元々持っている「特別な力」、
その名もVBA(ブイビーエー:Visual Basic for Applications)です。
難しそうに聞こえるかもしれませんが、VBAはまるで「Excelに指示を出すための秘密の言葉」みたいなもの。
専門的な難しい知識は、今の段階ではまったく必要ありません!
ちょっとした「呪文」をExcelに教えてあげるだけで、
普段の作業がビックリするくらい便利になることがあるんです。
さあ、あなたもExcelの魔法使いへの第一歩を踏み出してみませんか?
魔法の部屋へようこそ!VBAエディターの開き方
さて、魔法を使うには、まず「魔法の部屋」に入らないといけません。
ExcelでVBAの呪文を書き込む場所を「VBAエディター(VBE)」と呼びます。
なんだか秘密基地みたいでワクワクしませんか?
VBAエディターを開く手順
はじめに、VBAエディターを開くための準備をしましょう。
「開発」タブの確認
Excelのリボン(上のメニューが並んでいるところ)に「開発」というタブがありますか?

もし見当たらない場合は、以下の手順で表示させましょう。
まず、Excelの左上にある「ファイル」タブをクリックします。

次に、左側のメニューから「オプション」(または「Excelのオプション」)を選びます。

続いて、出てきた画面の左側で「リボンのユーザー設定」をクリックします。

そして、右側の「メインタブ」というリストの中に「開発」という項目があるので、そのチェックボックスにチェックを入れます。

最後に「OK」ボタンを押せば、リボンに「開発」タブが登場します!
VBAエディターを起動!
リボンに「開発」タブが表示されたら、その中の左の方にある「Visual Basic」というボタンをクリックしてみてください。

すると、新しいウィンドウがパッと開きます。
これが魔法の部屋、「VBAエディター」です!

VBAエディターの簡単なご紹介
初めて見ると「うわっ、なんか難しそう…」と感じるかもしれませんが、大丈夫!
今は細かいことは気にしなくてOKです。
まず、上の方には「メニューバー」(ファイルとか編集とか色々あるところ)。

次に、左側には「プロジェクトエクスプローラー」(Excelファイルの名前とかシート名が見えるところ)や「プロパティウィンドウ」(細かい設定をするところ)。

そして、中央の広い部分が「コードウィンドウ」。

ここに魔法の呪文を書き込んでいきます。
今回は、この「コードウィンドウ」に注目してくださいね!
魔法の呪文を唱える準備:シートに直接呪文を!
通常、VBAの呪文(コード)は「標準モジュール」という、
いわば「魔法の呪文専用ノート」のような場所に追加して書くことが多いです。
しかし、今回の魔法は、特定のExcelシートが選ばれたときに自動で発動させたいのです。
そのため、シートに直接呪文を書き込みます!
手順
それでは、呪文を書き込む準備をしましょう。
文字色や背景色は変えられます。説明画像と多少異なっても気にする必要はありません。
魔法をかけたいシートを選ぶ
はじめに、VBAエディターの左側にある「プロジェクトエクスプローラー」を見てください。
VBAProject (あなたのファイル名.xlsx) のような表示の下に、
Microsoft Excel Objects というフォルダがあります。

その中に、あなたのExcelファイルのシート名(例: Sheet1 (Sheet1)、Sheet2 (Sheet2)など)が並んでいます。
カーソル移動をカウントしたいシート(今回は仮に「Sheet1」とします)をダブルクリックしてください。

呪文を唱える場所の準備
Sheet1をダブルクリックすると、中央の「コードウィンドウ」がSheet1専用の書き込み場所になります。
次に、ウィンドウの上部、左側のドロップダウンリスト(初期状態では「(General)」と表示されていることが多いです)をクリックします。
そして、「Worksheet」を選びます。

すると、右側のドロップダウンリストが「SelectionChange」に自動で変わることがあります。

もし変わらなければ、右側のドロップダウンリストから「SelectionChange」を選んでください。
これで、シート上でセルが選択されたときに自動的に実行される魔法の呪文を書く準備が整いました!
最初の魔法の呪文(移動回数を数えるコードを紹介と解説)
さあ、いよいよ最初の魔法の呪文です!
以下の呪文を、先ほど準備したコードウィンドウに書き込んでみましょう。
Private Sub Worksheet_SelectionChange(ByVal t As Range)
Static r As Range
Static i As Long
If Not r Is Nothing Then
If t.Row <> r.Row Or t.Column <> r.Column Then
If Abs(t.Row - r.Row) + Abs(t.Column - r.Column) = 1 Then
i = i + 1
ThisWorkbook.Sheets("Sheet1").Range("A1").Value = i
End If
End If
End If
Set r = t
End Sub
「うわー、やっぱり英語ばっかりで難しそう…」って思いましたか?
大丈夫、一行ずつ、これが何をしているのか、超やさしく解説しますね!

解説
この呪文が何をしているのか、詳しく見ていきましょう。
Private Sub Worksheet_SelectionChange(ByVal t As Range) の解説
これは「このExcelシートで、どこかのセルが選ばれたら(SelectionChange)、
以下の特別な動きをしますよ~」という合図です。
t
というのは、新しく「選ばれたセル」のことを指すあだ名だと思ってください。
Static r As Range の解説
r
というのは、「前に選ばれていたセル」を覚えておくための箱(変数といいます)です。
Static
とついているのは、この魔法が何回も使われても、r
の中身を忘れずに覚えておけるようにするためのおまじないです。
Static i As Long の解説
i
というのは、「移動した回数」を数えて入れておくための箱です。
これも Static
で、回数をどんどん足していけるようにしています。
Long
は「大きな数も入るよ」という意味です。
If Not r Is Nothing Then の解説
「もし、前に選ばれたセル r
が空っぽじゃなかったら(つまり、これが最初のクリックじゃなかったら)」という意味です。
最初の1回目のクリックでは、まだ「前のセル」がないので、ここは動きません。
If t.Row <> r.Row Or t.Column <> r.Column Then の解説
「もし、新しく選ばれたセル t
の行番号が、前に選ばれたセル r
の行番号と違う
または 新しく選ばれたセル t
の列番号が、前に選ばれたセル r
の列番号と違ったら」
つまり、「前回と同じセルをもう一度クリックしたんじゃなくて、ちゃんと違うセルに移動したら」という条件です。
If Abs(t.Row – r.Row) + Abs(t.Column – r.Column) = 1 Then の解説
ここが今回の魔法のキモです!
Abs(t.Row - r.Row)
は、新しいセルと前のセルの「行の差(絶対値なのでマイナスにならない)」です。
A
bs(t.Column - r.Column)
は、新しいセルと前のセルの「列の差(これも絶対値)」です。
この2つの差を足したものが 1
になる時、というのは、
つまり「上下左右のすぐ隣のセルに移動した時だけ」という意味になります。
ぴょんっと離れたセルに飛んだ時はカウントしません。
i = i + 1 の解説
もしすぐ隣のセルに移動していたら、移動回数 i
に 1
を足します。
「カウントアップ!」という感じです。
ThisWorkbook.Sheets(“Sheet1”).Range(“A1“).Value = i の解説
そして、新しくなった移動回数 i
を、このExcelファイルの「Sheet1」という名前のシートの「A1セル」に書き込みます。

ここにカウントが表示されるわけですね!
End If の解説
「もし~だったら」の条件が終わったよ、という合図です。

Set r = t の解説
最後に、今回新しく選ばれたセル t
を、
「次に備えて、これが前のセルだったよ」と r
に覚えておかせます。
これで次の移動の準備ができました。
End Sub の解説
「これでおしまい!」という合図です。
どうでしょう?
一つ一つ見ていくと、Excelが何をしようとしているのか、
なんとなくイメージできませんでしたか?
魔法の呪文を唱える!(コードの書き込みと実行)
では、この魔法の呪文をVBAエディターのコードウィンドウに正確に書き込みましょう。
コピー&ペーストでも大丈夫ですよ!
書けましたか?

実は、このWorksheet_SelectionChange
という呪文は特別です。
何か「実行ボタン」のようなものを押す必要はありません。
Excelシートに戻って、セルをクリックして移動するだけで、
この魔法は自動的に発動するんです!
すごくないですか?
いざ、魔法体験!(動作確認)
さあ、VBAエディターのウィンドウはそのまま開いておいても良いですし、
右上の「×」で閉じても大丈夫です。

(閉じても魔法はExcelファイルに記憶されています!)
まず、Excelの「Sheet1」に戻ってください。
そして、どこでも良いので、適当なセルをクリックしてみてください。
さらに、キーボードの矢印キー(↑ ↓ ← →)や、マウスで隣のセルをクリックして、
カーソルをいくつか移動させてみましょう。
…どうですか?
Sheet1のA1セルを見てください!

カーソルを隣のセルに動かすたびに、
A1セルの数字が「1、2、3…」と増えていきませんか!?
ほら、本当に魔法みたいでしょ!?
あなたが意識しなくても、Excelがちゃんとカーソル移動を数えてくれているんです!
もし、うまくいかない場合は…?
「あれ?A1の数字が変わらないぞ?」という場合は、以下の点を確認してみてください。
呪文のコピペミスや入力ミスはないですか?
もう一度VBAエディターを開いて、
呪文(コード)が正確に入力されているか、じっくり見比べてみてください。
一文字でも違うと、魔法はうまくかかりません。
本当に「Sheet1」で試していますか?
今回の呪文は「Sheet1」のA1セルに表示するようになっているので、
他のシートではカウントされません。

マクロが有効になっていますか?
ファイルを開いたときに「マクロを有効にする」といったメッセージが出たら、
必ず有効にしてくださいね。
魔法の応用と次の魔法への期待
今回の魔法は、VBAでできることのほんの始まりに過ぎません。
例えば、
- カウントを表示するセルをA1じゃなくて、好きな場所に変える
- 特定の範囲だけでカウントするようにする
- 移動回数がある数になったらメッセージを出す
なんてことも、呪文を少し変えるだけでできちゃうんです!
VBAの世界は奥深くて、
あなたの「こうだったらいいのにな」を叶える魔法がたくさん眠っています。
今回の「カーソル移動カウント」が、
あなたにとってVBAの面白さに触れるきっかけになったら嬉しいです。
そして…実はこの「移動回数を数える」という考え方。
次回以降、ご紹介する予定の「最短でゴミ収集するルートを見つけるExcelパズル」でも、
ちょっと形を変えて応用できる考え方なんです。
お楽しみに!
まとめ:魔法の力、ちょっと体験してみませんか?
今回は、ExcelのVBAを使って、カーソルの移動回数を自動でカウントする方法をご紹介しました。
「プログラミングなんて無理!」と思っていた方も、
今回の「魔法の呪文」なら、意外と簡単だと感じていただけたのではないでしょうか?
Excelは、ただ表計算をするだけのソフトじゃありません。
ちょっとした工夫や「秘密の言葉」を知るだけで、
あなただけの便利なツールに大変身させることができるんです。
今回の体験を通して、Excelがもっと面白くなった!
もっと色々試してみたい!
と感じてもらえたら、とても嬉しいです。
また次回の記事でお会いしましょう!