【VBAマジック!】カーソル移動、Excelが勝手に自動カウント!

【VBAマジック!】カーソル移動、Excelが勝手に自動カウント! Excel

え、魔法!?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」というボタンをクリックしてみてください。

「Visual Basic」というボタンをクリック

すると、新しいウィンドウがパッと開きます。

これが魔法の部屋、「VBAエディター」です!

VBAエディターの説明

VBAエディターの簡単なご紹介

初めて見ると「うわっ、なんか難しそう…」と感じるかもしれませんが、大丈夫!

今は細かいことは気にしなくてOKです。

まず、上の方には「メニューバー」(ファイルとか編集とか色々あるところ)。

メニューバーの画像

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

プロジェクトエクスプローラー
プロパティウィンドウ

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

コードウィンドウ

ここに魔法の呪文を書き込んでいきます。

今回は、この「コードウィンドウ」に注目してくださいね!

魔法の呪文を唱える準備:シートに直接呪文を!

通常、VBAの呪文(コード)は「標準モジュール」という、
いわば「魔法の呪文専用ノート」のような場所に追加して書くことが多いです。

しかし、今回の魔法は、特定のExcelシートが選ばれたときに自動で発動させたいのです。

そのため、シートに直接呪文を書き込みます!

手順

それでは、呪文を書き込む準備をしましょう。

文字色背景色は変えられます。説明画像と多少異なっても気にする必要はありません。

魔法をかけたいシートを選ぶ

はじめに、VBAエディターの左側にある「プロジェクトエクスプローラー」を見てください。

VBAProject (あなたのファイル名.xlsx) のような表示の下に、
Microsoft Excel Objects というフォルダがあります。

フォルダの選択

その中に、あなたのExcelファイルのシート名(例: Sheet1 (Sheet1)、Sheet2 (Sheet2)など)が並んでいます。

カーソル移動をカウントしたいシート(今回は仮に「Sheet1」とします)をダブルクリックしてください。

コードウィンドウ

呪文を唱える場所の準備

Sheet1をダブルクリックすると、中央の「コードウィンドウ」がSheet1専用の書き込み場所になります。

次に、ウィンドウの上部、左側のドロップダウンリスト(初期状態では「(General)」と表示されていることが多いです)をクリックします。

そして、「Worksheet」を選びます。

SelectionChange

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

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

うわー、やっぱり英語ばっかりで難しそう…」って思いましたか?

大丈夫、一行ずつ、これが何をしているのか、超やさしく解説しますね!

VBAを貼り付けた様子

解説

この呪文が何をしているのか、詳しく見ていきましょう。

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) は、新しいセルと前のセルの「行の差絶対値なのでマイナスにならない)」です。

Abs(t.Column - r.Column) は、新しいセルと前のセルの「列の差(これも絶対値)」です。

この2つの差を足したものが 1 になる時、というのは、
つまり「上下左右のすぐ隣のセルに移動した時だけ」という意味になります。

ぴょんっと離れたセルに飛んだ時はカウントしません。

i = i + 1 の解説

もしすぐ隣のセルに移動していたら、移動回数 i1 を足します。

カウントアップ!」という感じです。

ThisWorkbook.Sheets(“Sheet1”).Range(“A1“).Value = i の解説

そして、新しくなった移動回数 i を、このExcelファイルの「Sheet1」という名前のシートの「A1セル」に書き込みます。

ThisWorkbook.Sheets("Sheet1").Range("A1").Value = i の解説

ここにカウントが表示されるわけですね!

End If の解説

もし~だったら」の条件が終わったよ、という合図です。

IFに対応する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がもっと面白くなった!
もっと色々試してみたい!
と感じてもらえたら、とても嬉しいです。

また次回の記事でお会いしましょう!

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