【VBA】Excelで入力したセルの値を自動で読み上げる機能(Speak on Enter)を切り替える方法

目次

はじめに

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) を代入することで、簡単にトグル処理を実装できる。

このマクロをクイックアクセスツールバーに登録しておけば、必要なときだけこの機能を有効にでき、データ入力作業の正確性を手軽に向上させることができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次