エクセル「VBA」シートの内容をエンターKEYだけで操作してみる!

( ノ゚Д゚)こんばんは!こんにちは!おやすみなさい!おはようございます! とっちーです。

 

ボタンを使わずにキーボードだけでデータの転記。

 

そんなことって出来るのかなって思いつつ、できましたのでご報告させていただきます。

 

 

キーボードの操作だけでデータを転記

 

(はてな君)
ボタンはないの?

 

(えっちゃん)
ないよ

 

(はてな君)

 

(はてな君)
どして?

 

(えっちゃん)
無くてもできるから

 

シートのあるセルを操作すれば、データが転記出来たら便利かなって作ってみました。

 

今回のエクセルのブック(ファイル)を起動すると、基本のデータ転記する目的では、マウスを使用しません!

 

 

試みたのは、Sheet1のセルに「社員コード」をテンキーなどで入力して社員コードの入力欄で「Enter」キーを押すと、隣に「社員名」が表示されるようにしてみました。

 

「社員コード」と「社員名」はSheet2に一覧作成しているものをSheet1の➊「社員コード」に入力された値を➋「Enter」キーを押すともとにSheet2で➌検索させて、Sheet1の検索した社員コードの隣に社員名を表示させるようにしています。

 

このようにキーボードだけ操作をしただけで、表示できるのはエクセルVBAの機能の一つ、Application.Onkeyメソッドのおかげです。

 

 

Application.Onkeyメソッド

 

 

キーボードの任意のキーを押すと、プログラムを実行できるように出来るんです。

 

 

書式は、Application.Onkey “コード”,”プロシージャ名”になります。

 

コードは省略不可です。それはそうですよね。設定するためのものですから省略したら?意味ないですよね。

 

設定するのは、使用したいキーの文字列になります。

 

キーボードに入力して画面に表示してくれるアルファベットなどのキーは””のダブルフォーテーションで囲みましょう。例えばAは”A”のようにします。

 

キーボードに入力しても画面に表示されないAltキー・Shiftキー・Ctrlキーなどは定まったコードを書式の中に記述するようになります。

 

入力表示されないコードの一覧

 

 

上図の該当するコードを””内に記述することで設定ができます。必ず{}を忘れないようにしましょう。

 

それでは、Application.Onkeyを使用する手順をお伝えします。

 

(はてな君)
ワクワク

 

(えっちゃん)
準備はいい!

 

(はてな君)
うん

 

 

ブックに指定をする

 

キーボードの役割を設定変更するにあたって、起動時に設定をしておくと便利です。

 

ただし解除するまで、キーボードの役割機能は継続します。

 

 

作成するエクセルをマクロ有効ブックで一度保存した後、再度立ち上げて(ファイルを開けること)ください。

 

さらにVBAエディタをキーボードの「Alt」キーを押しながら「F11」キーを押して起動しましょう。

 

➊VBA-Projectの中にあるThisWorkbookを選択します。

 

➋コードエディタ上部のオブジェクト選択の部分を「Workbook」にプロシージャ選択部分を「Open」にしてみましょう。

Private Sub Workbook_Open()

End sub

が記述されます。今回は「Enter」キーを使用しますので、~の部分に➌Application.Onkey “{Enter}”,”プロシージャ名”を記述します。

 

➍Application.Onkey “{Enter}”,”プロシージャ名”の、{Enter}はキーボードのテンキーのEnterキーになります。

 Application.Onkey “~”,”プロシージャ名”の、~はキーボードのEnterキーになります。

 

 

Application.Onkey “{Enter}”,”プロシージャ名”の部分は、何回か使うコードになります。そこで、~の部分に Call プロシージャ名と記述して、標準モジュール内に作成しても大丈夫です。

 

 

Workbook_open内

Private Sub Workbook_Open()

   Call Callで呼び出だすプロシージャ名

End Sub

 

標準モジュール内

Sub Callで呼び出すプロシージャ名()

Application.Onkey “{Enter}”,”プロシージャ名”

End sub

 

でも大丈夫です。

 

シートに指定する

 

設定の方法は、ブックのときと同様です。

 

 

シートに設定をする場合は、VBAエディタのVBAProjectで➊該当するシートを選択します。

 

➋コードエディタ上部のオブジェクト選択の部分を「Worksheet」にプロシージャ選択部分を「Activate」にしてみましょう。

 

➌Worksheet_Activate()は、そのコードを記述したシートが使用されている間、継続してプロシージャを開始させることができるシートのプロシージャになります。

 

➍Worksheet_Deactivate()は、シートが閉じられるとき、継続して行っていたこと等を終了させることができるシートのプロシージャになります。

 

 

以上がApplication.Onkeyを動作させるための設定になります。次にApplication.Onkey が実行されたときに”何の”処理をするのかを記述する方法をお伝えします。

 

標準モジュールに処理内容を記述

 

Application.Onkeyで処理したい、プロシージャは標準モジュールに記述しましょう。

 

 

Application.Onkey “コード”,”プロシージャ名”のプロシージャ名の部分です。

 

コードの記述方法

Private Sub プロシージャ名() 

 

 ~Application.Onkeyに処理させたい内容~

 

End Subの~の部分に記述します。

 

作成例のご紹介

 

今回は、ブックの中に3シート作成しています。

1シート目は、操作シート、2シート目は元データシート、3シート目は1シート目で操作したデータを記述するシートになっています。

 

 

項目や基本データなど最初に記述しておきます。

 

Sheet1

セル番地 A1 社員コード
セル番地 B1 社員名
セル番地 A4 Sheet3へ書込み

 

Sheet2

セル番地 A1 社員リスト セル番地 B1 社員名
セル番地 A2 1 セル番地 B2 さんま
セル番地 A3 2 セル番地 B3 みかん
セル番地 A4 3 セル番地 B4 カレイ
セル番地 A5 4 セル番地 B5 いわし
セル番地 A6 5 セル番地 B6 かさご
セル番地 A7 6 セル番地 B7 えそ
セル番地 A8 7 セル番地 B8 はぎ

 

Sheet3

セル番地 A1 社員コード セル番地 B1 社員名

 

 

以下の動画は作成したVBAの動画になります。

 

入力の際に操作しているのは、キーボードの「Enter」「カーソル」「数値」キーの3種類になります。

 

 

作成例のコード

 

Workbookに記述するコード

 

WorkSheetに記述するコード(”Sheet1”)

 

標準モジュールに記述するコード

 

上記3点のコードをそれぞれの箇所へ記述し、作成したブック(ファイル)を再起動させます。

 

再起動したファイルは、キーボードの操作でデータを操作することができるようになっています。

 

まとめ

 

今回は、キーボードの「Enter」キーを押すとデーターの検索と転記ができることにチャレンジしてみました。

 

ボタンを作成しなくても操作できるんですね。う~んなかなかエクセルってすごいですね。

 

もしよかったら、ぜひお試しください。

 

 

楽しくエクセルをアレンジして今日も、新しい発見をしてみませんか!

自分に合ったお気に入りのスタイルでエクセルを使いこなしていきましょう。

 

ありがとうございました。