Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1512to1516
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
Inhaltsverzeichnis

Formeln nach Überschreiben wieder zurückschreiben

Formeln nach Überschreiben wieder zurückschreiben
16.09.2016 11:23:09
Harald
Hallo, ich habe eine Frage. Der Sachverhalt ist folgender:
Ich habe eine Tabelle, in der in die Spalten C, D, und E und in den Zeilen 12 bis 42 Uhrzeiten eingetragen werden sollen. Sie sind durch Formeln schon mit einem Zellverweis auf eine andere Zelle vorbelegt. Dieser kann durch den Nutzer überschrieben werden. Wenn er die Zellinhalt aber löscht, soll wieder die ursprüngliche Formel eingetragen werden.
Ich habe das über VBA folgendermaßen gelöst:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For b = 12 To 42
If Range("C" & b) = "" Then Range("C" & b) = "=V" & b
On Error GoTo Ende
Next b
For e = 12 To 42
If Range("D" & e) = "" Then Range("D" & e) = "=W" & e
On Error GoTo Ende
Next e
For p = 12 To 42
If Range("E" & p) = "" Then Range("E" & p) = "=X" & p
On Error GoTo Ende
Next p
Ende:
End Sub

Dies scheint aber enorm Rechenleistung zu binden, da der Cursor nur seeeeehr schleppend nach einer Eingabe weiterläuft. Könnte man dies etwas "schlanker" mit weniger Rechenbelastung lösen?
Bin für jeglichen Hinweis dankbar.
Viele Grüße
Harald Holmer

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formeln nach Überschreiben wieder zurückschrei
16.09.2016 11:46:29
Daniel
Hi
du verwendest das falsche Event.
SelectionChange wird ja bei JEDER Cursorbewegung ausgelöst.
im Prinzip muss das ganze ja nur laufen, wenn der Anwender die Zellinhalte löscht und somit eine Änderung an den Zellen vornimmt.
Das wäre dann das Change-Event.
desweitern bearbeitst du per schleife jede Zelle einzeln. Auch das ist langsam, weil Excel bei jeder Zellwertänderung eine reihe von Aktionen ausführen muss.
Wenn du die Zellen nicht einzeln per Schleife, sondern alle gemeinsam befüllst, dann können auch diese Aktionen für alle Zellen gemeinsam ausgeführt werden.
Optimiert würde das ganze dann so aussehen:
Private Sub Worksheet_Change(ByVal Target As Range)
With Range("C12:E42")
If Not Intersect(.Cells, Target) Is Nothing Then
If WorksheetFunction.CountBlank(.Cells) > 0 Then
Application.EnableEvents = False
.Cells.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=RC[19]"
Application.EnableEvents = True
End If
End If
End With
End Sub
Gruß Daniel
Anzeige
AW: Formeln nach Überschreiben wieder zurückschrei
16.09.2016 11:55:39
Harald
Hallo Daniel,
herzlichen Dank für Deine schnelle Reaktion.
Wie kriege ich jetzt dann bei Deiner Variante die wechselnden Zellbezüge rein?
Es muss ja standardmäßig z. B. in B12 der Wert von V12, in C 12 der Wert von W12 und in B13 dann entsprechend V13 und so weiter. Das bereitet mir das Kopfzerbrechen.
Grüße
Harald
AW: Formeln nach Überschreiben wieder zurückschrei
16.09.2016 12:09:14
Rudi
Hallo,
z. B. in B12 der Wert von V12
In deinem Code ist es C12.
Ansonsten ist es wie in deinem Ur-Code geschrieben. C12-V12, D12-W12, E12-X12 etc.
Gruß
Rudi
AW: Formeln nach Überschreiben wieder zurückschrei
16.09.2016 12:12:10
Harald
Hallo Rudi,
Äh ja...C12-V12, D12-W12, E12-X12 und so weiter...danke für die Korrektur...da hab ich mich vertippt...
Grüße
Harald
Anzeige
AW: Formeln nach Überschreiben wieder zurückschrei
16.09.2016 12:11:16
Daniel
Hi
nein, die Formel ist in allen Zellen die gleiche
nimm den Wert aus der Zelle um 0 Zeilen und 19 Spalten nach rechts versetzt.
Der Eindruck der geänderten Zellbezüge entsteht nur deshalb, weil es sich hier um einen relativen Zellbezug handelt und die A1-Addressierungsart auch die relativen Zellbezüge als absolute Zelladresse anzeigen muss.
Verwendet man jedoch die alternative Z1S1-Adressierungsart (bzw R1C1 für VBA), welche relative Zellbezüge auch relativ bechreiben kann, dann sieht man dass die Formel hierbei für alle Zellen die gleiche ist.
Gruß Daniel
AW: Formeln nach Überschreiben wieder zurückschrei
16.09.2016 12:14:15
Harald
Ok danke....
Gruß
Harald
Anzeige
AW: Formeln nach Überschreiben wieder zurückschrei
16.09.2016 12:27:29
Harald
Hallo Daniel,
funktioniert prima. Danke! Ein Problem habe ich jetzt trotzdem noch:
Spalte C = Beginn-Zeit
Spalte D = Ende-Zeit
Spalte E = Pausenzeig
Spalte F = Ist-Zeit (also Ende minus Beginn minus Pause)
Wenn ich jetzt anfange, in Spalte C einen Wert einzutragen, kommen ja die klassischen #Wert!#-Fehlermeldungen von Excel. Gleichzeitig krieg ich jetzt auch die Fehlermeldung, dass die Funktion nicht mehr ausgeführt werden kann. Habe schon versucht, über einen On error - Ausgang weiterzukommen, aber dann funktioniert die ganze Prozedur nicht mehr....
nochmals Fragezeichen über meinem Kopf...bin reif fürs WE ;-)
Grüße
Harald
Anzeige
AW: Formeln nach Überschreiben wieder zurückschrei
16.09.2016 13:00:13
Daniel
hi
wenns nicht funktioniert, bitte die Beispieldatei hochladen.
dann kann man mal draufschauen, woran es liegt.
Oft liegt die Ursache an punkten, die du nicht beschrieben hast.
Gruß Daniel
AW: Formeln nach Überschreiben wieder zurückschrei
19.09.2016 07:56:25
Harald
Hallo Daniel,
das ist der Link zur besagten Datei. Alles für das Tabellenblatt "Januar" derzeit. Im Januar ist auch der VBA-Code drinne...
https://www.herber.de/bbs/user/108247.xlsm
Vielleicht hast Du noch eine Idee, wie wir die Fehlermeldungen bei der Eingabe rauskriegen. Herzlichen Dank schon mal im Voraus und eine schöne Woche!
Grüße
Harald
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige