Grüezi Reinhard
Reinhard Schüll schrieb am 21.12.2007
Post by Reinhard Schüllmeinst du vielleicht so ?
.... im Modul1
Global Wert_alt, Wert_neu as Variant
... im Worksheet
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = [D250] then
Wert_neu = [D250].Value
If Wert_alt <> Wert_neu then Tonerzeugen
Wert_alt = Wert_neu
End If
End Sub
Sub Tonerzeugen()
......... die Wave-Methode klappt, aber nicht das Beepen........
Hmmm, das kommt ganz darauf an, *wie* oder *aufgrund wessen* sich der Wert
ändert. Folgende Zeile gehört für den Beep jedenfalls in ein allgemeines
Modul deiner Mappe:
Declare Function Beep Lib "kernel32.dll" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
Ich bin dann mal davon ausgegangen, dass er von Hand oder per Copy/Paste in
die Zelle eingetragen wird - da würde dann das Change()-Ereignis greifen.
Die folgenden Zeilen überwachen die Zelle D250:
Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Intersect(Target, Range("D250"))
If Not Target Is Nothing Then
Dim L As Long
'die erste Zahl berstimmt die Tonhöhe, die zweite die Länge
L = Beep(500, 200)
End If
End Sub
Wenn Du allerdings das Ergebnis einer Formel drin hast, dann greift das
Calcualte()-Ereignis, das dann noch eine Variable benötigt um den
vorherigen Wert zwischenzuspeichern:
Dim varGoal As Variant
Private Sub Worksheet_Calculate()
If varGoal <> Range("D250").Value Then
Dim L As Long
'die erste Zahl berstimmt die Tonhöhe, die zweite die Länge
L = Beep(500, 200)
varGoal = Range("D250")
End If
End Sub
Mit freundlichen Grüssen
Thomas Ramel
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-2]
Microsoft Excel - Die ExpertenTipps