Spielt einen Ton mit VBA, wenn ein Fehler gefunden wird
Ich habe momentan diesen code:
Option Explicit
Private Declare Function sndPlaySound32 Lib "winmm.dll" _
Alias "sndPlaySoundA" (ByVal lpszSoundName _
As String, ByVal uFlags As Long) As Long
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cell As Range
Dim CheckRange As Range
Dim PlaySound As Boolean
Set CheckRange = Range("C:C")
For Each Cell In CheckRange
If Cell.Value = "#N/A" Then
PlaySound = True
End If
Next
If PlaySound Then
Call sndPlaySound32("C:\windows\media\chord.wav", 1)
End If
End Sub
Ich versuche es so, dass wenn es ein Fehler in Spalte C, einen Ton gespielt wird, doch es funktioniert nicht, irgendwelche Ideen?
- +1 für die Idee, für mögliche künftige Verwendung)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauchen Sie nicht-API für diese
Können Sie
Beep
als gut.Beispiel
WEG 1
Dieser code wird ausgeführt, wenn es änderung an beliebiger Stelle im Blatt
WEG 2
Alternative der obige code
Weg 3
Wenn Sie möchten, um zu überprüfen, Col C, nur wenn es eine manuelle änderung überall in Col C
Weg 4
Wenn Sie möchten, um zu überprüfen in einer Zelle ob es eine manuelle änderung in dieser Zelle
Weg 5
Variation von Art 4
FOLLOWUP (Kommentare)
Ich denke, du meintest Col C und nicht Col D. verwenden Sie
Worksheet_SelectionChange
für dieseBeep
selbst ist eine nette Sache)Msgbox Cell.Address
nach dieser Zeile in der Weise, 1If Cell.Text = "#N/A" Then
Was bekommen Sie?C4
haben? keine chance, ich kann sehen, Ihre Arbeitsmappe? Wenn ja, dann können Sie Sie hochladen, in http://www.wikisend.com und teilen den link hier?C4
im BlattSpare
hat#N/A
und daher sind Sie immer den Piepton. Also, es si arbeiten corrctly?Followup
Fügen Sie den untenstehenden code ausführen und sehen, ob es funktioniert...
WorksheetFunction.IsNA(Cell.Value)
ist der Ansatz, den ich verwenden würde, um speziell finden Sie eine #NA Fehler.Ändern Zelle.Wert in Zelle.Text
Wenn es eine Formel, die Fehler der Zellen-Wert wird etwas entlang der Linien der Fehler 2042 aber deine if-Anweisung ist auf der Suche nach dem text "#N/A"
Ich auch vorschlagen, nur den Bereich, der statt der gesamten Spalte, da dies die Zeit verringern, die es braucht, um laufen.
Können Sie auch die Ausfahrt für sofort, wenn ein Fehler gefunden wird.
Beep wird Ihnen nicht erlauben, zu spielen, jeder Ton, aber es wird ein hörbares Geräusch und erfordert nicht einen API-Aufruf oder der computer für die angegebene audio-Datei.
- - EDIT - -
Ich habe gerade getestet ... der code unten, und es scheint, um korrekt zu funktionieren für mich.
-EDIT2-
Korrigierte code
-EDIT3-
Arbeiten, Kopie Ihrer original-Beitrag
Versuchen, Sie zu ersetzen mit
If PlaySound = True Then
Ich denke, deine If-Anweisung, die prüft den Wert des PlaySound sollte in Ihrem For-Schleife. Die Art und Weise haben Sie es geschrieben, es wird nur ein Geräusch machen, wenn die Letzte Zelle in CheckRange = "#N/A", weil PlaySound halten den letzten Wert zugewiesen, um es aus der Schleife.