Have Excel Read A Range Of Data To You

Introduction
When keying in large amounts of data, it can be helpful to have Excel read the input back to you... either as you go, or after you have finished. In either case, this lets you focus on reading the numbers from the page, comparing what you have typed to the original values.

This article covers both scenarios individually.

Macro Weaknesses

  • The speech application reads information back phonetically. So if you are concerned about having names or words actually pronounced correctly, you may have to modify them a bit in the text.
  • The speech application reads quickly enough, but there is a noticeable delay between when the speech ends and when text will actually start registering in the cell. It may not be a good idea to activate immediate read-back if you are a quick typer.

Versions Tested:
These macros have been tested with Excel 2007, but should also work in Excel 97 through 2003 without any modifications.

Read back your input as you type
The two macros below will read back the input as you type information in the sheet.

Read back any cell on the sheet as data is entered
Place the following macro in the worksheet code module:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Author       : Ken Puls (www.excelguru.ca)
'Macro Purpose: Read aloud any values entered into the worksheet
    Application.Speech.Speak Target.Value
End Sub

Read back cells within a given range on a worksheet as data is entered
I find it easiest to create a named range called "ReadToMe" that encompasses the range of data that you want monitored. Once you've done that, then the code below goes into the worksheet code module:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Author       : Ken Puls (www.excelguru.ca)
'Macro Purpose: Read aloud value any values entered into the named range
    If Not Intersect(Worksheets("Sheet1").Range("ReadToMe"), Target) Is Nothing Then
        Application.Speech.Speak Target.Value
    End If
End Sub

Read back your input from a range
The routines below will read back the data from a range of completed data. Each of the routines goes in a standard module.

Read back each cell in the selected area

Code:
Sub ReadToMe()
'Author       : Ken Puls (www.excelguru.ca)
'Macro Purpose: Read each cell in the selection aloud
    Dim cl As Range
    For Each cl In Selection
        Application.Speech.Speak cl.Value
    Next cl
End Sub

Read back each cell in a named range

Code:
Sub ReadNamedRange()
'Author       : Ken Puls (www.excelguru.ca)
'Macro Purpose: Read each cell in the range aloud
    Dim rng As Range
    Dim cl As Range
    Set rng = Worksheets("Sheet1").Range("ReadToMe")
    For Each cl In rng
        Application.Speech.Speak cl.Value
    Next cl
End Sub

Share:

Facebook
Twitter
LinkedIn

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Latest Posts