Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
816to820
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
816to820
816to820
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Nachfrage wg. VBA(Speziell Stefan Br. gerichtet)

Nachfrage wg. VBA(Speziell Stefan Br. gerichtet)
13.11.2006 17:07:43
HannaG.
Natürlich auch an andere, wenn jemand außer Stefan noch durchblickt.
Hallo,
die u.g. Formel gefällt mir so gut, daß ich sie erweitern möchte(und vergeblich versucht habe bereits).
Möchte zusätzlich zu dem Kopiervorgang in die 2. Zeile , geknüpft an eine Änderung in "D", ein weiteres Macro hinzufügen, diemal Änderungen in Spalte "E", gesamte betroffene Zeile in die 3. Zeile kopiert.
Einfaches hinzukopieren und ersetzen von D und 2 durch E und 3 war nicht sehr erfolgreich. Blickt hier jemand durch(natürlich auch durch meine Formulierung des Problemes..)
Dies steht unter "Tabelle2(Code)
Weiter unten Macro1
Dim myArray(540)
Dim bolTimer As Boolean
Sub Show_change()
For i = 7 To 540
If Range("D" & i).Value myArray(i - 7) Then
If Not (Range("D" & i).Value = 0) And Not (Range("D" & i).Value = Chr(133)) Then
Application.ScreenUpdating = False
Rows(i).Copy
Rows(2).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Range("D" & i).Select
Call sndPlaySound32("c:\signal", 1)
Application.ScreenUpdating = True
End If
myArray(i - 7) = Range("D" & i)
End If
Next i
Call Timer
End Sub
Sub Timer()
Dim NextTime As Date
If Not bolTimer Then Exit Sub
NextTime = Now + TimeValue("00:00:05")
Application.OnTime NextTime, "Tabelle2.Show_Change"
End Sub
Sub initialize_array()
For i = 7 To 540
myArray(i - 7) = Range("D" & i)
Next i
End Sub
Sub Start_Ueberwachung()
initialize_array
bolTimer = True
Timer
End Sub
Sub Stopp_Ueberwachung()
bolTimer = False
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub

Hier Macro1
Sub Macro1()
'
' Macro1 Macro
' Macro recorded 10/31/2006 by Stefan Brandstetter
'
'
Rows("12:12").Select
Selection.Copy
Rows("2:2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("D12").Select
Application.CutCopyMode = False
End Sub

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nachfrage wg. VBA(Speziell Stefan Br. gerichtet)
13.11.2006 17:38:17
Stefan
Hallo Hanna,
Bin gerade ein bisschen im Stress, ich schau's mir spaeter mal an.
Schoene Gruesse
Stefan
AW: Nachfrage wg. VBA(Speziell Stefan Br. gerichtet)
13.11.2006 21:55:21
Stefan
Hallo Hanna,
Hier der Code fuer beide Spalten:

Dim myArray(540)
Dim myArray2(540)
Dim bolTimer As Boolean
Sub Show_change()
For i = 7 To 540
If Range("D" & i).Value <> myArray(i - 7) Then
If Not (Range("D" & i).Value = 0) And Not (Range("D" & i).Value = Chr(133)) Then
Application.ScreenUpdating = False
Rows(i).Copy
Rows(2).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Range("D" & i).Select
Call sndPlaySound32("c:\signal", 1)
Application.ScreenUpdating = True
End If
myArray(i - 7) = Range("D" & i)
End If
Next i
Call Show_change2
End Sub
Sub Show_change2()
For i = 7 To 540
If Range("E" & i).Value <> myArray2(i - 7) Then
If Not (Range("E" & i).Value = 0) And Not (Range("E" & i).Value = Chr(133)) Then
Application.ScreenUpdating = False
Rows(i).Copy
Rows(3).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Range("E" & i).Select
Call sndPlaySound32("c:\signal", 1)
Application.ScreenUpdating = True
End If
myArray2(i - 7) = Range("E" & i)
End If
Next i
Call Timer
End Sub
Sub Timer()
Dim NextTime As Date
If Not bolTimer Then Exit Sub
NextTime = Now + TimeValue("00:00:05")
Application.OnTime NextTime, "Tabelle1.Show_Change"
End Sub
Sub initialize_array()
For i = 7 To 540
myArray(i - 7) = Range("D" & i)
Next i
End Sub
Sub initialize_array2()
For i = 7 To 540
myArray2(i - 7) = Range("E" & i)
Next i
End Sub
Sub Start_Ueberwachung()
initialize_array
initialize_array2
bolTimer = True
Timer
End Sub
Sub Stopp_Ueberwachung()
bolTimer = False
End Sub

Schoene Gruesse
Stefan
Anzeige
AW: Nachfrage wg. VBA(Speziell Stefan Br. gerichtet)
15.11.2006 14:36:57
HannaG.
Perfekt. Ich blick zwar immer weniger durch, aber andere scheinbar schon...
Um es noch auf die Spitze zu treiben mit der Fragerei:
Wenn ich jetzt noch einen speziellen Sound an eine Bedingung knüpfen möchte:
Zb.
Wenn Zelle N3 größer 10 dann playsound(einmal Sound abspielen, bis sich der Wert ändert, dann erneute Prüfung der Bedingung).
Hast du da noch eine Lösung? Susanne&ich wissen schon garnicht mehr , wo uns der Kopf steht bei der "Beepereien", aber lieber beepen als durchsrcollen bis zur Ohnmacht...
AW: Nachfrage wg. VBA(Speziell Stefan Br. gerichtet)
15.11.2006 14:40:48
HannaG.
Ich meine die Ergänzung natürlich in das Kunstwerk von Stefan eingefügt und nicht serarat als Code.
LG
Hanna
Anzeige
AW: Nachfrage wg. VBA(Speziell Stefan Br. gerichtet)
15.11.2006 16:50:12
Stefan
Hallo Hanna,
Zur Sicherstellung das ich das richtig verstehe:
Jedesmal wenn sich Zeile 3 aendert (was gleichbedeutend mit einer Aenderung der Werte in Spalte E ist), soll ueberprueft werden ob der Wert, der jetzt in N3 steht, groesser ist als 10. Ist das ok so? Fuer Deine Beschreibung muesste man sonst noch eine dritte "Erinnerungs"-Funktion einbauen. Und was soll mit den Sounds passieren fuer Aenderungen in Zeile 2? Sollen die so bleiben?
Schoene Gruesse
Stefan
AW: Nachfrage wg. VBA(Speziell Stefan Br. gerichtet)
15.11.2006 20:18:10
HannaG.
Also ich lasse einen Wert, der durch deinen Formel in z.b. N2 kopiert wird, in N4(nicht N3, ein Versehen, die 3. Reihe wird ja von der VBA benutzt) kopieren(via normaler Excel-Formel(wird noch multipliziert mit Konstante).
Wenn der Wert in N4 über 10 ist, soll ein Sound ertönen. Wenn, durch Veränderung der obersten Reihe in N2, auch der Wert in N4 verändert wird, soll eine erneute Prüfung auf N4 größer 10 erfolgen.
LG an den Unermüdlichen
Hanna
Anzeige
AW: Nachfrage wg. VBA(Speziell Stefan Br. gerichtet)
15.11.2006 21:01:55
Stefan
Hallo Hanna,
Hier die Aenderungen. Eine Variable muss neu deklariert werden (als "Erinnerungswert"), und drei neue Zeilen in Show_Change2(). Ich hab hier nur die Code-Teile abgebildet, die sich aendern.
Damit wird jetzt im schlimmsten Fall dreimal ein Ton ausgeloest. Ich denke du willst jetzt wieder einen oder beide der vorherigen Toene abstellen, dazu einfach die "Call sndPlaySound32" an der entsprechenden Stelle rausnehmen.

Dim myArray(540)
Dim myArray2(540)
Dim myValue '**** NEU ****
Dim bolTimer As Boolean
Sub Show_change()
For i = 7 To 540
If Range("D" & i).Value <> myArray(i - 7) Then
If Not (Range("D" & i).Value = 0) And Not (Range("D" & i).Value = Chr(133)) Then
Application.ScreenUpdating = False
Rows(i).Copy
Rows(2).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Range("D" & i).Select
Call sndPlaySound32("c:\signal", 1)
Application.ScreenUpdating = True
End If
myArray(i - 7) = Range("D" & i)
End If
Next i
Call Show_change2
End Sub
Sub Show_change2()
For i = 7 To 540
If Range("E" & i).Value <> myArray2(i - 7) Then
If Not (Range("E" & i).Value = 0) And Not (Range("E" & i).Value = Chr(133)) Then
Application.ScreenUpdating = False
Rows(i).Copy
Rows(3).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Range("E" & i).Select
Call sndPlaySound32("c:\signal", 1)
Application.ScreenUpdating = True
End If
myArray2(i - 7) = Range("E" & i)
End If
Next i
'**** NEU ****
If Range("N4").Value <> myValue Then
myValue = Range("N4").Value
If myValue > 10 Then Call sndPlaySound32("c:\signal", 1)
End If
'**** NEU ****
Call Timer
End Sub

Schoene Gruesse
Stefan
Anzeige
AW: Nachfrage wg. VBA(Speziell Stefan Br. gerichtet)
16.11.2006 10:20:58
HannaG.
Hallo,
nachdem ich die Sheets mit DDE-Daten versorge, kriege ich bei der neuen Formel die Fehlermeldung "Typen unverträglich". War bei der Ursprungsformel(mit der 1. Zeile) nie so.
Meine nebulöse Vermutung:
Heute wirft mir leider DDE wieder die 3 Punkte "..." aus in manchen Zeilen, was zu der Meldung
"#Wert" in "E" führt. Allerdings hast du doch bereits dieses
"If Not (Range("E" & i).Value = 0) And Not (Range("E" & i).Value = Chr(133)) Then"
eingebaut. Zieht aber scheinbar nicht, oder?
LG
Hanna
AW: Nachfrage wg. VBA(Speziell Stefan Br. gerichtet)
16.11.2006 13:16:54
Stefan
Hallo Hanna,
In welcher Zeile/Spalte kommen denn die "..."? Wenn die nur in Spalte D auftauchen, greift die von Dir zitierte Zeile nicht, da muss das Programm wieder wie im ersten Teil des Codes auf "D" umgestellt werden.
Was fuer Daten hast Du denn in Spalte E? Sind das Daten aus der DDE, oder eine Formel die auf Spalte D zurueckgreift?
Schoene Gruesse
Stefan
Anzeige
AW: Nachfrage wg. VBA(Speziell Stefan Br. gerichtet)
17.11.2006 16:35:40
HannaG.
Man kann genau erkennen, wie der Cursor die Spalte(in dem Falle hab ich "S" genommen) abarbeitet.
Beispiel:
Formel darin ist: =WENN(F55-R55>0;(F55-R55);"")
An genau diesr Zelle erscheint aber #Wert, weil die Ursprungszelle F55 aufgrund von DDE-Fehler "..." nur enthält.
Und schon erscheint das freundliche "Typen unverträglich"
Dieses DDE ist schon eine veraltetet Geschichte. RTD ist angekündigt, soll deutlich leistungsstärker sein.
Dim myArray(540)
Dim myArray2(540)
Dim myValue '**** NEU ****
Dim bolTimer As Boolean

Sub Show_change()
For i = 7 To 540
If Range("D" & i).Value <> myArray(i - 7) Then
If Not (Range("D" & i).Value = 0) And Not (Range("D" & i).Value = Chr(133)) Then
Application.ScreenUpdating = False
Rows(i).Copy
Rows(2).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Range("D" & i).Select
Call sndPlaySound32("c:\message", 1)
Application.ScreenUpdating = True
End If
myArray(i - 7) = Range("D" & i)
End If
Next i
Call Show_change2
End Sub


Sub Show_change2()
For i = 7 To 540
If Range("S" & i).Value <> myArray2(i - 7) Then
If Not (Range("S" & i).Value = 0) And Not (Range("S" & i).Value = Chr(133)) Then
Application.ScreenUpdating = False
Rows(i).Copy
Rows(3).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Range("S" & i).Select
Call sndPlaySound32("c:\Arb", 1)
Application.ScreenUpdating = True
End If
myArray2(i - 7) = Range("S" & i)
End If
Next i
'**** NEU ****
If Range("N4").Value <> myValue Then
myValue = Range("N4").Value
If myValue > 2000 Then Call sndPlaySound32("c:\driveby", 1)
End If
'**** NEU ****
Call Timer
End Sub


Sub Timer()
Dim NextTime As Date
If Not bolTimer Then Exit Sub
NextTime = Now + TimeValue("00:00:05")
Application.OnTime NextTime, "Tabelle2.Show_Change"
End Sub


Sub initialize_array()
For i = 7 To 540
myArray(i - 7) = Range("D" & i)
Next i
End Sub


Sub initialize_array2()
For i = 7 To 540
myArray2(i - 7) = Range("E" & i)
Next i
End Sub


Sub Start_Ueberwachung()
initialize_array
initialize_array2
bolTimer = True
Timer
End Sub


Sub Stopp_Ueberwachung()
bolTimer = False
End Sub

Anzeige
AW: Nachfrage wg. VBA(Speziell Stefan Br. gerichtet)
17.11.2006 17:34:28
Stefan
Hallo Hanna,
Der Fehler liegt in folgendem: das Programm ist so geschrieben, dass es die Bearbeitung abbricht, wenn die drei Punkte in der Ursprungsspalte stehen. Ansonsten geht das Programm davon aus, dass ein gueltiger Wert darin steht. Da Du jetzt nicht mehr auf die Spalte der DDE abgreifst, sondern auf eine berechnete Spalte (die wohl irgendwie auch auf die Spalte der DDE zugreift), kommen da jetzt keine drei Punkte mehr, sondern diese "Fehlermeldung". Mein Vorschlag (ich hoffe, die einfachste Loesung...) waere, sicherzustellen dass in der Spalte S ein vertraeglicher Wert steht, z.B. so:
=WENN(ISTZAHL(F55-R55);WENN(F55-R55&gt0;F55-R55;"");"")
Schoene Gruesse
Stefan
Anzeige
AW: Nachfrage wg. VBA(Speziell Stefan Br. gerichtet)
17.11.2006 18:38:23
HannaG.
Klappt. Typen-Meldung gehört der Vergangenheit hat. Danke!
Leider klappt es jetzt zu gut. In der R-Spalte taucht , sofern kein Wert gezogen wird, zuweilen die 0 auf. Folge: Die Formel wirft häufiger eine Zahl größer 0 aus, als eigentlich angebracht ist . Kann man das verhindern?
Sprich: Wenn R gleich 0 oder leer: Leerzeichen in S
LG
Hanna
AW: Nachfrage wg. VBA(Speziell Stefan Br. gerichtet)
17.11.2006 18:48:24
Stefan
Hallo Hanna,
Du kannst noch bis zu 6 mal mehr WENN Verwenden in der Formel:
=WENN(ISTZAHL(F55-R55);WENN(F55-R55&gt0;WENN(R55&gt0;F55-R55;"");"");"")
Schoene Gruesse
Stefan
AW: Nachfrage wg. VBA(Speziell Stefan Br. gerichtet)
18.11.2006 01:06:31
HannaG.
Klappt nicht ganz:
Z.b. Zeile 7
=WENN(ISTZAHL(F7-R7);WENN(F7-R7&gt0;WENN(R7&gt0;F7-R7;"");"");"")
erscheint in S7 2,74
wobei in F7 2,7400 und R7 0,0000 steht.
Anzeige
AW: Nachfrage wg. VBA(Speziell Stefan Br. gerichtet)
18.11.2006 01:10:25
HannaG.
ok, mein Fehler. Muß natürlich R7=0 heißen
AW: Nachfrage wg. VBA(Speziell Stefan Br. gerichtet)
17.11.2006 19:15:27
HannaG.
Man kann genau erkennen, wie der Cursor die Spalte(in dem Falle hab ich "S" genommen) abarbeitet.
Beispiel:
Formel darin ist: =WENN(F55-R55>0;(F55-R55);"")
An genau diesr Zelle erscheint aber #Wert, weil die Ursprungszelle F55 aufgrund von DDE-Fehler "..." nur enthält.
Und schon erscheint das freundliche "Typen unverträglich"
Dieses DDE ist schon eine veraltetet Geschichte. RTD ist angekündigt, soll deutlich leistungsstärker sein.
Dim myArray(540)
Dim myArray2(540)
Dim myValue '**** NEU ****
Dim bolTimer As Boolean

Sub Show_change()
For i = 7 To 540
If Range("D" & i).Value <> myArray(i - 7) Then
If Not (Range("D" & i).Value = 0) And Not (Range("D" & i).Value = Chr(133)) Then
Application.ScreenUpdating = False
Rows(i).Copy
Rows(2).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Range("D" & i).Select
Call sndPlaySound32("c:\message", 1)
Application.ScreenUpdating = True
End If
myArray(i - 7) = Range("D" & i)
End If
Next i
Call Show_change2
End Sub


Sub Show_change2()
For i = 7 To 540
If Range("S" & i).Value <> myArray2(i - 7) Then
If Not (Range("S" & i).Value = 0) And Not (Range("S" & i).Value = Chr(133)) Then
Application.ScreenUpdating = False
Rows(i).Copy
Rows(3).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Range("S" & i).Select
Call sndPlaySound32("c:\Arb", 1)
Application.ScreenUpdating = True
End If
myArray2(i - 7) = Range("S" & i)
End If
Next i
'**** NEU ****
If Range("N4").Value <> myValue Then
myValue = Range("N4").Value
If myValue > 2000 Then Call sndPlaySound32("c:\driveby", 1)
End If
'**** NEU ****
Call Timer
End Sub


Sub Timer()
Dim NextTime As Date
If Not bolTimer Then Exit Sub
NextTime = Now + TimeValue("00:00:05")
Application.OnTime NextTime, "Tabelle2.Show_Change"
End Sub


Sub initialize_array()
For i = 7 To 540
myArray(i - 7) = Range("D" & i)
Next i
End Sub


Sub initialize_array2()
For i = 7 To 540
myArray2(i - 7) = Range("E" & i)
Next i
End Sub


Sub Start_Ueberwachung()
initialize_array
initialize_array2
bolTimer = True
Timer
End Sub


Sub Stopp_Ueberwachung()
bolTimer = False
End Sub

Anzeige
AW: Nachfrage wg. VBA(Speziell Stefan Br. gerichtet)
16.11.2006 11:05:51
HannaG.
Hallo,
nachdem ich die Sheets mit DDE-Daten versorge, kriege ich bei der neuen Formel die Fehlermeldung "Typen unverträglich". War bei der Ursprungsformel(mit der 1. Zeile) nie so.
Meine nebulöse Vermutung:
Heute wirft mir leider DDE wieder die 3 Punkte "..." aus in manchen Zeilen, was zu der Meldung
"#Wert" in "E" führt. Allerdings hast du doch bereits dieses
"If Not (Range("E" & i).Value = 0) And Not (Range("E" & i).Value = Chr(133)) Then"
eingebaut. Zieht aber scheinbar nicht, oder?
LG
Hanna
AW: Nachfrage wg. VBA(Speziell Stefan Br. gerichtet)
15.11.2006 21:05:57
HannaG.
Also ich lasse einen Wert, der durch deinen Formel in z.b. N2 kopiert wird, in N4(nicht N3, ein Versehen, die 3. Reihe wird ja von der VBA benutzt) kopieren(via normaler Excel-Formel(wird noch multipliziert mit Konstante).
Wenn der Wert in N4 über 10 ist, soll ein Sound ertönen. Wenn, durch Veränderung der obersten Reihe in N2, auch der Wert in N4 verändert wird, soll eine erneute Prüfung auf N4 größer 10 erfolgen.
LG an den Unermüdlichen
Hanna
AW: Nachfrage wg. VBA(Speziell Stefan Br. gerichtet)
15.11.2006 15:00:47
HannaG.
Ich meine die Ergänzung natürlich in das Kunstwerk von Stefan eingefügt und nicht serarat als Code.
LG
Hanna

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige