Kann ich Excel-Signaltöne ausgeben, wenn eine Berechnung abgeschlossen ist?


13

Ich habe diese wirklich langen Berechnungen in Excel. Ich möchte meine Aufmerksamkeit vom Bildschirm ablenken und etwas an meinem Schreibtisch erledigen, aber ich möchte benachrichtigt werden, wenn die Berechnung abgeschlossen ist.

Irgendwelche Ideen?


1
Wie genau rechnen Sie? Wenn es in VBA ist, warum nicht die "Beep" -Methode von VBA verwenden ? Was hast du schon probiert
ƬᴇcƬᴇιʜ007

2
@ techie007 nicht VBA. Funktioniert nur in großen Excel-Tabellen.
Eliyahu

1
Trotzdem können Sie wahrscheinlich die Beep-Funktion verwenden, insbesondere wenn Sie in SS "Funktionen" anstelle von "Formeln" verwenden. Aber "wie" Sie es verwenden können, hängt stark von der Funktionsweise Ihrer Tabelle ab, die wir nicht kennen. Geben Sie einfach einen Wert in eine Zelle ein und müssen dann sehr lange warten, bis der Wert fertig ist, oder drücken Sie eine Taste, um die Berechnung zu starten, nachdem Sie die Zellen gefüllt haben? Wenn Sie F11 drücken, um den VBA-Editor zu öffnen, ist dort eine Menge Code enthalten?
ƬᴇcƬᴇιʜ007

@ techie007 Ich verwende Formeln. Ich drücke nach einiger Zeit die Taste F9 und muss warten.
Eliyahu

Sie müssten Ihre Berechnungen auf eine andere Weise durchführen. Was Sie wollen, ist nicht möglich, wenn Sie Excel
lediglich anweisen

Antworten:


21

OK, etwas zum Ausprobieren (Anweisungen gehen von Excel 2007 oder neuer aus):

  • Öffnen Sie Ihre Arbeitsmappe.
  • Speichern Sie es als Makro-fähiges SS ( .XLSM).
  • Drücken Sie Alt-F11, um das VBA-Codierungsfenster zu öffnen.
  • Klicken Sie mit der rechten Maustaste auf VBAProject ( yourbook.xlsm) und wählen Sie Einfügen → Modul.
  • Öffnen Sie das neu erstellte "Module1".
  • Fügen Sie im Modul dieses Snippet ein:

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

    Dadurch wird die Taste F9 bei jedem Öffnen der SS neu zugewiesen. Wenn Sie F9 drücken, wird F9Handleranstelle der üblichen Berechnung ausgeführt.

  • Fügen Sie im Modul dieses Snippet ein:

    Sub F9Handler()
        Application.Calculate
        Beep
    End Sub
    

    Dies wird nun ausgeführt, wenn Sie F9 drücken. In der ersten Zeile wird der Application.CalculateBefehl (was normalerweise mit F9 ausgeführt wird) und anschließend der Befehl Beeps ausgeführt.

  • Speichern Sie alles.

  • Schließen Sie Excel.
  • Öffnen Sie das von Ihnen erstellte XLSM (erneut).
  • Profitieren. :)

Hinweis: Möglicherweise müssen Sie Makros aktivieren und / oder das Dokument zu einem "vertrauenswürdigen" Dokument machen, um sicherzustellen, dass die Makros wie erwartet ausgeführt werden.

Mehr Info:


5

Verwenden Sie wie die anderen erwähnten den beepBefehl in Visual Basic (VB):

Function beepNow()
Beep 
End Function

Um VB-Codierung zu erhalten, müssen Sie die Developer tabverfügbaren bereitstellen (siehe: Registerkarte Entwickler sichtbar machen ).

Wenn sich also eine Zelle oder ein Zustand ändert, ertönt ein Piepton. Beispielmakro zum Aufrufen des obigen VBS-Codes:=IF(C2<>C3,beepNow(),"")


2
Beachten Sie jedoch, dass die Einführung von VBA-UDFs, wenn Sie sie derzeit nicht verwenden, zu einer massiven Leistungsverschlechterung führen kann (da sie im Gegensatz zu normalen Funktionen nur auf dem Hauptthread ausgeführt werden). Sollte kein Problem mit einem einzelnen Piepton sein, aber wenn Sie damit beginnen, überall darauf zu streuen, treten Probleme auf.
Sapi

1
Leider verwendet diese Funktion Ihren PC-Lautsprecher - nicht Ihre Soundkarte und Lautsprecher, sondern den internen Lautsprecher. Zu Ihrer Information - In vielen Unternehmen wurde der PC-Lautsprecher entfernt oder deaktiviert, sodass Sie nichts hören.
Raddevus

1

Alternativ zum Platzieren des Moduls in der SS können Sie es auch in Ihre Personal.xlsb einfügen. Dies würde es Ihnen ermöglichen, den "Piepton" für jeden ss verfügbar zu haben. Um es auszuführen, ändern Sie entweder die Symbolleiste für den Schnellzugriff oder fügen Sie eine Schaltfläche / Form ein, um in Ihr ss zu klicken und ihr das Makro zuzuweisen.


Willkommen bei Super User. Dies scheint eher ein Kommentar zu den anderen Antworten zu sein als eine wesentlich andere Lösung, für die Antwortbeiträge bestimmt sind. Mit etwas mehr Wiederholungen können Sie Kommentare posten.
Fixer1234

0

Die Antwort von @ ƬᴇcƬᴇιʜ007 ist ausgezeichnet, mit einer Ausnahme, die andere kommentiert haben: Die BeepMethode basiert auf Ihrem eingebauten (und manchmal deaktivierten) Lautsprecher im Computer und verwendet Ihre Lautsprecher nicht, sodass Sie möglicherweise nichts hören.

Auf der Grundlage dieser Antwort veröffentliche ich eine Problemumgehung. Wenn es weniger Inhalte gäbe, hätte ich stattdessen einen Kommentar gepostet.

Folgendes verwende ich, um einen Sound mit VBA unter Windows abzuspielen. Es werden Ihre normalen Computerlautsprecher anstelle der integrierten und häufig deaktivierten Lautsprecher verwendet, auf die mit dieser BeepMethode zugegriffen wird.

Beginnen Sie mit der Antwort von @ ƬᴇcƬᴇιʜ007. Wechseln Sie Beepdazu einfach :

PlaySound sound_Up

Sie können den Sound ändern sound_Up, indem Sie in der SoundType-Aufzählung (Liste) im folgenden Code zu einem anderen Element wechseln , z. B. sound_Completeoder sound_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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.