Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
888to892
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
888to892
888to892
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Formeln durch Werte in der ganzen Formel ersetzen

Formeln durch Werte in der ganzen Formel ersetzen
20.07.2007 00:06:13
Leon
Hallo!
Vielleicht könnte mir jemand helfen beim folgenden (VBA) - Problem :
Das Calculate_Ereignis wird dadurch ausgelöst, wenn die jeweilige Zeit (Minuten, Spalte „A“)
der aktuellen Zeit (Minute, Spalte „B“) entspricht.
Somit ist eine Zeile bzw. ein Datensatz immer dann aktuell (ActiveCell.Value), wenn aktuelle Zeit ist.
Die Aufgabe ist die, dass Makro automatisch in die aktuelle Zeile reingehen soll und in dem ganzen
Datensatz (Spalten „B“, „C“, „D“ etc.) die vorhandenen Formeln durch Werte
(ActiveCell.Offset(0, 1).Formula = ActiveCell.Offset(0, 1).Value) ersetzen soll.
Das Problem ist, das in der ersten Zeile ein anderer Wert (neuer Wert) rein soll, damit die endlose Schleife vermieden wird.
D.h., ActiveCell.value = "0" And _ nächste Spalte:
ActiveCell.Offset(0, 1).Formula = ActiveCell.Offset(0, 1).Value And _
ActiveCell.Offset(0, 2).Formula = ActiveCell.Offset(0, 2).Value And _
etc.
UND DAS TUT MEIN KLEINES MAKRO NICHT !!!
ES ERSETZT ENTWEDER DIE ALLERERSTE ZEILENSPALTE (0 REIN) ODER NUR DIE ZWEITE FORMEL!!!
Wie könnte man es richtig codemäßig ausformulieren?
Ich wäre für Ihre / Eure Lösungsvorschläge sehr dankbar!!!
PS: Hier ist das ganze makro
Private Sub Worksheet_calculate() range("A1").Select Dim datewert As Single datewert = range("B1").Value Do Until ActiveCell.Value = "" If ActiveCell.Value = datewert Then _ ActiveCell.Value = 0 ActiveCell.Offset(0, 2).Formula = ActiveCell.Offset(0, 2).Value ActiveCell.Offset(0, 3).Formula = ActiveCell.Offset(0, 3).Value ActiveCell.Offset(0, 4).Formula = ActiveCell.Offset(0, 4).Value Else: ActiveCell.Offset(1, 0).Activate Loop End Sub


5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formeln durch Werte in der ganzen Formel erset
20.07.2007 01:21:00
Ramses
Hallo
Das Makro wird überhaupt nicht ausgelöst, weil das Calculate-Ereignis nur ausgelöst wird, wenn irgendwas zur Neuberechnung vorhanden ist, oder eine Formelabhängige Zelle einen neuen Wert erhält.
Ansonsten tut sich in deiner Tabelle gar nichts automatisch :-)
"..Die Aufgabe ist die, dass Makro automatisch in die aktuelle Zeile reingehen .."
Dazu muss das Makro nicht reingehen, denn die aktive zelle ist nun mal immer aktiv
"...Somit ist eine Zeile bzw. ein Datensatz immer dann aktuell (ActiveCell.Value), wenn aktuelle Zeit ist...."
Wann ist aktuelle Zeit,... wo kommt die her.
Tut mir leid, aber ohne Beispiel ist das ein Ratespiel
Gruss Rainer

Anzeige
AW: Formeln durch Werte in der ganzen Formel erset
20.07.2007 08:42:20
Leon
Hallo!
Calculate - Ereignis wird durch eine ständige Neuberechnung der aktuellen Zeit (hh:mm) durch die Formel in der Spalte "B" (=JETZT()) und dem Abgleich mit der Spalte A ausgelöst.
Ich stelle eine Beispieldatei rein, damit man es besser nachvollziehen kann.
https://www.herber.de/bbs/user/44268.xls

AW: Formeln durch Werte in der ganzen Formel erset
20.07.2007 09:42:40
Ramses
Hallo
die Funktion "=JETZT()" löst nur einmalig eine Neueberechnung aus wenn die Formel eingetragen wird, bzw. wenn die Datei geöffnet wird.
Eine "..eine ständige Neuberechnung der aktuellen Zeit ..." wird auf jeden Fall nicht ausgelöst, weil du Funktion eben NICHT dauerhaft die aktuelle Uhrzeit anzeigt, sondern nur einmalig dann wenn die Formel eingetragen oder eben aktualisiert ist
Bei deiner Beispieltabelle erfolgt die Berechung genau einmal:
Einmal beim eintragen/aktualisieren der Formel
Was erwartest du den von der Frage:
":...Die Aufgabe ist die, dass Makro automatisch in die aktuelle Zeile reingehen soll und in dem ganzen .."
Was ist denn die "Aktuelle Zeile" ?
Tabelle1

 ABCD
108:39:0009:36:0008:3920.07.2007 09:36
208:40:0009:36:0008:4009:36
308:41:0009:36:0008:4109:36
408:42:0009:36:0008:4209:36
508:43:0009:36:0008:4309:36
608:44:0009:36:0008:4409:36

Formeln der Tabelle
ZelleFormel
A1=C1
B1=ZEIT(STUNDE(D1); MINUTE(D1); )
D1=JETZT()
A2=C2
B2=ZEIT(STUNDE(D2); MINUTE(D2); )
D2=JETZT()
A3=C3
B3=ZEIT(STUNDE(D3); MINUTE(D3); )
D3=JETZT()
A4=C4
B4=ZEIT(STUNDE(D4); MINUTE(D4); )
D4=JETZT()
A5=C5
B5=ZEIT(STUNDE(D5); MINUTE(D5); )
D5=JETZT()
A6=C6
B6=ZEIT(STUNDE(D6); MINUTE(D6); )
D6=JETZT()


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Wenn du die Tabelle anschaust, dann stehen in der Spalte C fixe Zeitangaben, während in B die gleiche Zeit aus der Formeln der Spalte D berechnet wird, und in Spalte A die gleiche Zeit angezeigt wird wie in Spalte C
Vergleichen tust du jedoch nur
datewert = Range("B1").Value
den Wert aus B1 der demzufolge auch nur auf die erste Zeile zutrifft, und sonst nicht mehr.
Sorry, aber diesen Aufbau verstehe ich ehrlich gesagt nicht :-)
Gruss Rainer

Anzeige
AW: Formeln durch Werte in der ganzen Formel erset
20.07.2007 17:49:00
Leon
Hallo Rainer,
Erstmal vielen Dank, dass Du dir meine Tabelle genau angeschaut hast und tatsächlich einen wesentlichen Mangel gefunden hattest, nämlich dass die Funktion (=JETZT()) NICHT ständig die Zeit aktualisiert!!!
Habe dieses Problem behoben, indem eine ständige Minunten - Zeitaktualisierung über Makro aktualisiert wird.
Somit ergibt sich folgendes: Spalte "B" (Zahlenformalt) ist verbunden mit Spalte "E" (hh:mm), wo
eine feste, vorgegebne (Minuten)-Zeit ist.
Spalte "C" (Zahlenformat) ist verbunden mit "D" (hh:mm) und "D" ist verbunden mit der Spalte "F",
die über Makro ständig aktualisiert wird und dadurch jetzt tatsächlich im Minutentakt
ein Calculate_Ereignis auslöst.
Habe jetzt, um es plausibler zu machen, folgendes geändert:
In der Spalte "A" ist die Formel drin, die "B" (vorgegebene, feste Zeit) und "C" (sich automatisch aktualisiertende Zeit) vergleicht und bei "WERT(B)=WERT(C)" die 1 zurückgibt, sonst ist "0".
D.H., WENN in der jeweiligen Zelle der A-Spalte WERT "1" durch aktuelle Zeit anspringt,
wird ein Makro (Calculate_Ereignis) ausgelöst, 1 durch "0" ersetzt und bei den anliegenden Zellen (Offset(0, 1), etc.) die Formel durch Werte ersetzt werden soll, wie schon früher geschildert.
UND das funktioniert ja schon (wird Range.("A1") angesprungen und geht die ganze Spalte durch
bis zur ersten leeren Zeile).
Makro wird automatisch ausgelöst und in der aktuellen Zeitzeile der "1"-Wert durch "0" - Value ersetzt
wird.
UND WEITER GEHT ES EBEN NICHT, was ich eingangs als mein aktuelles Problem geschildert habe.
Die neue Datei stelle ich wieder rein, so dass man jetzt vielleicht besser nachvollziehen könnte, was ich
meinte.
Wäre dankbar, wenn du dir es nochmals anschauen möchtest!
Beste Grüße
LEON

Anzeige

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige