はじめに
Excelには、セルに値を入力して Enter
キーを押した瞬間に、その入力内容を音声で自動的に読み上げる機能が備わっています。これは、伝票などの紙媒体から数値を連続して入力する際に、目線をExcelシートに戻すことなく、耳で入力内容を確認できるため、非常に便利なデータ検証機能です。
この「入力時の読み上げ(Speak on Enter)」機能のオン/オフは、通常クイックアクセスツールバーのボタンで行いますが、VBAマクロを使っても切り替えることができます。
この記事では、実行するたびに入力時の自動読み上げ機能のオンとオフを切り替える、シンプルなトグルマクロをご紹介します。
【注意】 この機能を使用するには、PCのOSにテキスト読み上げエンジンがインストールされており、スピーカーやヘッドフォンが接続されている必要があります。
入力時の自動読み上げを切り替えるVBAサンプルコード
このマクロは、Application.Speech.SpeakCellOnEnter
というプロパティの状態を調べ、現在の状態を反転(オンならオフに、オフならオンに)させます。
完成コード
' 入力したセルの値の自動読み上げ機能(Speak on Enter)のオン/オフを切り替える
Sub ToggleSpeakOnEnter()
Dim speechEngine As Speech
Set speechEngine = Application.Speech
'--- 現在の設定状態に応じて、アナウンスを流し、設定を切り替える ---
If speechEngine.SpeakCellOnEnter = True Then
' 現在オンの場合 → オフにする
speechEngine.Speak "入力時の読み上げを、オフにしました。", SpeakAsync:=True
speechEngine.SpeakCellOnEnter = False
Else
' 現在オフの場合 → オンにする
speechEngine.Speak "入力時の読み上げを、オンにしました。", SpeakAsync:=True
speechEngine.SpeakCellOnEnter = True
End If
End Sub
より簡潔なコード
現在の状態を知らせる音声アナウンスが不要であれば、以下のようにもっと短く書くこともできます。
' 読み上げ機能のオン/オフを単純に切り替える
Sub ToggleSpeakOnEnterSimple()
With Application.Speech
.SpeakCellOnEnter = Not .SpeakCellOnEnter
End With
End Sub
コードの解説
Dim speechEngine As Speech
Application.Speech
オブジェクトを格納するための変数を宣言しています。このオブジェクトを通じて、Excelの音声機能にアクセスします。
If speechEngine.SpeakCellOnEnter = True Then
これが、現在の設定状態を判定している部分です。
.SpeakCellOnEnter
:Enter
キーを押したときに入力値を読み上げる機能が有効かどうかをTrue
/False
で返すプロパティです。- この
If
文で、現在がオンの状態かオフの状態かを判断し、それぞれに応じたアナウンスを流しています。
speechEngine.SpeakCellOnEnter = False
(または True
)
.SpeakCellOnEnter
プロパティに True
または False
を代入することで、機能のオン/オフを切り替えています。このプロパティは読み書き可能です。
Not .SpeakCellOnEnter
簡潔なコードで使われている Not
演算子は、ブール値(True
/False
)を反転させます。 .SpeakCellOnEnter = Not .SpeakCellOnEnter
と書くことで、「現在の設定と逆の状態を、新しい設定として代入する」というトグル処理を一行で実現しています。
まとめ
今回は、VBAを使って「入力時の自動読み上げ(Speak on Enter)」機能のオン/オフを切り替える方法を解説しました。
Application.Speech.SpeakCellOnEnter
プロパティで、機能のオン/オフを制御・確認できる。- このプロパティに自身の否定 (
Not
) を代入することで、簡単にトグル処理を実装できる。
このマクロをクイックアクセスツールバーに登録しておけば、必要なときだけこの機能を有効にでき、データ入力作業の正確性を手軽に向上させることができます。