計算が終了したときにExcelのビープ音を鳴らしてもいいですか?


13

これらの非常に長い計算はExcelで行います。画面から注意をそらしてデスクで何かをしたいのですが、計算が終了したときに注意してください。

何か案は?


1
どのくらい正確に計算していますか?VBAにある場合、VBAの「ビープ音」メソッドを使用しないのはなぜですか?すでに何を試しましたか?
Ƭᴇcʜιᴇ007

2
@ techie007はVBAではありません。大きなExcelスプレッドシートで機能します。
エリヤフ

1
それでも、特にSSが「式」ではなく「関数」を実際に使用して計算している場合は、おそらくBeep関数を使用できます。しかし、それを「どのように」使用できるかは、スプレッドシートの動作に大きく依存しますが、これはわかりません。セルに値を入力して、それが終了するまで本当に長い時間待たなければならないのですか、またはセルを埋めた後にボタンを押して計算を開始するのですか?F11キーを押してVBAエディターを開く場合、そこに大量のコードがありますか?
Ƭᴇcʜιᴇ007

@ techie007数式を使用しています。たくさんの仕事が終わったらF9キーを押して、待たなければなりません。
エリヤフ

別の方法で計算を行う必要があります。あなたがやっているすべての開いているブック上の計算を実行するために、Excelを言っている場合は何がしたいことはできません
Ramhound

回答:


21

OK、試してみてください(指示はExcel 2007以降を想定しています):

  • ワークブックを開きます。
  • マクロ対応SS(.XLSM)として保存します。
  • Alt-F11を押してVBAコーディングウィンドウを開きます。
  • VBAProject(yourbook.xlsm)を右クリックし、[ 挿入]→[モジュール] を選択します。
  • 新しく作成した「Module1」を開きます。
  • モジュールにこのスニペットを貼り付けます:

    Sub Auto_Open()
        Application.OnKey "{F9}", "F9Handler"
    End Sub
    

    これにより、SSが開かれるたびにF9キーが再割り当てされます。F9キーを押すとF9Handler、通常の計算の代わりに実行されます。

  • モジュールに、次のスニペットを貼り付けます。

    Sub F9Handler()
        Application.Calculate
        Beep
    End Sub
    

    これがF9を押したときに実行されるようになるものです。最初の行はApplication.Calculate(F9が通常実行する)を実行してから、ビープ音を鳴らします。

  • すべてを保存します。

  • Excelを閉じます。
  • 作成したXLSMを(再)開きます。
  • 利益。:)

注:マクロが期待どおりに実行されるようにするには、おそらくマクロを有効にするか、ドキュメントを「信頼できる」ドキュメントにする必要があります。

より詳しい情報:


5

他の人が述べたように、beepVisual Basic(VB)でコマンドを使用します。

Function beepNow()
Beep 
End Function

VBコーディングを取得するには、Developer tab利用可能なものを取得する必要があります(「開発者」タブを表示するを参照)

したがって、セルまたは条件に変更があると、ビープ音が鳴ります。上記のVBSコードを呼び出すマクロの例:=IF(C2<>C3,beepNow(),"")


2
現在VBA UDFを使用していない場合、それらを導入するとパフォーマンスが大幅に低下する可能性があることに注意してください(通常の関数とは異なり、メインスレッドでのみ実行されるため)。ビープ音が1回鳴るだけで問題になることはありませんが、これを散らし始めると問題が発生します。
サピ

1
残念ながら、この機能はPCスピーカーを使用します。サウンドカードやスピーカーではなく、内部スピーカーを使用します。参考までに、多くの企業ではPCスピーカーが取り外されているか無効になっているため、何も聞こえません。
raddevus

1

モジュールをssに配置する代わりに、Personal.xlsbに配置することもできます。これにより、どのビープ音でも「ビープ音」を利用できるようになります。実行するには、クイックアクセスツールバーを変更するか、ボタン/図形を挿入してssをクリックし、マクロを割り当てます。


スーパーユーザーへようこそ。これは、実質的に異なる解決策ではなく、他の回答に対するコメントのようです。これは、回答の投稿の目的です。もう少し担当者がいれば、コメントを投稿できます。
fixer1234

0

@Ƭᴇcʜιᴇ007によって投稿された回答は、他の人がコメントしている1つの例外を除いて優れたものです。このBeep方法は、コンピューター内のオンボード(および無効になっている)スピーカーに依存し、スピーカーを使用しないため、何も聞こえない場合があります。

その答えに基づいて回避策を投稿しています。関係するコンテンツが少なければ、代わりにコメントを投稿することになります。

以下は、WindowsでVBAを使用してサウンドを再生するために使用するものです。オンボードの代わりに通常のコンピュータースピーカーを使用し、多くの場合、このBeep方法でアクセスする無効なスピーカーを使用します。

@Ƭᴇcʜιᴇ007の回答から始めます。これに変更Beepするだけです:

PlaySound sound_Up

またはのsound_Upような以下のコードのSoundType列挙(リスト)から別の項目に変更することにより、サウンドを変更できます。sound_Completesound_Notify

Option Explicit
' --------------------------------------------------
' --------------------------------------------------
'   REQUIRED DLL REFERENCE AND CONSTANTS
' --------------------------------------------------
' Reference to external procedure in DLL to play sounds

#If VBA7 Then
    ' 64-bit MS Office
    Private Declare PtrSafe Function sndPlaySound32bit Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As LongPtr) As LongPtr
#Else
    ' 32-bit MS Office
    Private Declare Function sndPlaySound32bit Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As LongPtr) As LongPtr
#End If

' --------------------------------------------------
' --------------------------------------------------
'   CONSTANTS
' --------------------------------------------------
'
Public Const SOUND_DO_NOT_WAIT          As String = "&H1"
Private Const SOUND_FILES_PATH          As String = "C:\Windows\Media\"

' --------------------------------------------------
' --------------------------------------------------
'   PUBLIC ENUMERATIONS
' --------------------------------------------------
'
Public Enum SoundType
    sound_None = 0
    sound_Up = 1
    sound_Down = 2
    sound_Attention = 3
    sound_Blocked = 4
    sound_Boop = 5
    sound_Complete = 6
    sound_Critical = 7
    sound_Ding = 8
    sound_Error = 9
    sound_Exclamation = 10
    sound_FastDown = 11
    sound_Information = 12
    sound_Notify = 13
    sound_PhoneRing = 14
    sound_RingOut = 15
    sound_Stop = 16
    sound_Tada = 17
    sound_Tone = 18
End Enum

' --------------------------------------------------
' --------------------------------------------------
'   PUBLIC METHODS
' --------------------------------------------------
'
Public Sub PlaySound(ByVal sound As SoundType)
' Plays a sound from a list (see the 'SoundType' Enum).  Code execution continues
'   while sound is playing.
    Dim soundFileName                   As String
    soundFileName = GetSoundFileName(sound)

    If Not soundFileName = vbNullString Then
        sndPlaySound32bit SOUND_FILES_PATH & soundFileName, SOUND_DO_NOT_WAIT
    End If
End Sub

' --------------------------------------------------
' --------------------------------------------------
'   PRIVATE DEPENDENCIES
' --------------------------------------------------
'
Private Function GetSoundFileName(ByVal soundToGet As SoundType) As String
' Returns a windows sound file name (not path) from a member of the custom
'   'SoundType' enumeration.

    Dim fName                           As String

    Select Case soundToGet
    Case sound_Up:          fName = "Speech On.wav"
    Case sound_Down:        fName = "Speech Off.wav"
    Case sound_Attention:   fName = "Windows Battery Low.wav"
    Case sound_Blocked:     fName = "Windows Pop-up Blocked.wav"
    Case sound_Boop:        fName = "Speech Misrecognition.wav"
    Case sound_Complete:    fName = "Windows Print complete.wav"
    Case sound_Critical:    fName = "Windows Critical Stop.wav"
    Case sound_Ding:        fName = "Windows Ding.wav"
    Case sound_Error:       fName = "Windows Error.wav"
    Case sound_Exclamation: fName = "Windows Exclamation.wav"
    Case sound_FastDown:    fName = "Speech Sleep.wav"
    Case sound_Information: fName = "Windows Information Bar.wav"
    Case sound_Notify:      fName = "notify.wav"
    Case sound_PhoneRing:   fName = "Windows Ringin.wav"
    Case sound_RingOut:     fName = "Windows Ringout.wav"
    Case sound_Stop:        fName = "chord.wav"
    Case sound_Tada:        fName = "tada.wav"
    Case sound_Tone:        fName = "Windows Balloon.wav"
    Case Else:              fName = vbNullString
    End Select

    GetSoundFileName = fName
End Function
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.