Clever-Excel-Forum

Normale Version: Werte von VBA Code eintragen und einfrieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
[attachment=18488]
Hallo werte Community!


Ich habe einen VBA-Code und ich möchte, dass die Werte die berechnet werden, in einer Nachbarspalte eingetragen


und ohne Formel eingefroren werden. (Für weitere Excel Bearbeitung)


Bin VBA Neuling.


Zum Verständnis Anhangdatei.
Hallöchen,

mal ohne reinzuschauen - wenn Du weist, wann bzw. warum gerechnet wird, könnte man mit einem

Private Sub WorkSheet_Change

darauf reagieren und gezielt Zellen in die Nachbarzelle kopieren

Ansonsten kann man auch generell beim Rechnen eine ganze Spalte oder einen Bereich daraus kopieren und in den Nachbarbereich einfügen, z.B.

Private Sub Worksheet_Calculate
Range("H5:H15").Copy Range("I5:I15")
End Sub

Das würde dann bei jeder Berechnung ausgelöst, egal, ob das was mit H5:H15 zu tun hat.
[attachment=18587]
Hallo André!

Danke erstmal für Deine Tipps. 
Natürlich weiß ich wann u. warum gerechnet wird, habe aber keine Ahnung wie ich das in mein Prog.
einbauen kann. :16:
Mein Prog. schaut inzwischen schon etwas anders aus als am 29.06.18 aber da sind noch einige Sachen zu machen.
Ich habe ja von Haus aus eine For-Next eingebaut, aber habe nicht bedacht, dass ja jede Rechenoperation eine
andere Länge hat. Das heißt, dass ich statt dessen eine Do Loop Untilschleife einbauen muss. Das Until = wenn F11 eine 5 ist, soll er aus der Schleife aussteigen. Huh
Habe im Net einige Tutorials geguckt, aber nichts gefunden was mir helfen würde.

Noch ein Problem habe ich entdeckt, wenn am Ende der Berechnung nur mehr ein Wert stehen bleibt, was manchmal
vorkommt, kommt die Fehlermeldung: Die Large-Eigenschaft des WorksheetFunction-Objektes kann nicht zugeordnet
werden.
Logisch, er hat die kkleinste (den einzelnen Wert) gelöscht und sucht nun die kgrösste.
Vielleicht kannst Du mir nochmals helfen, es würde mich sehr freuen?
Wenn nicht, danke ich Dir trotzdem für Deine bisherige Hilfe!!!

Liebe Grüße aus Wien,
Atnik
Hallo Atnik,

hier erst mal was zur Übernahme nach D.
Bei den negativen Werten ist es einfach, den Übernahmewert rechnest Du ja. Da kommt der Code vor's End If:

Zitat: Cells(i, 4).Value = Cells(i, 2).Value
End If

Bei den positiven müsstest Du erst mal mit dem größten rechnen, bevor Du ihn löschst:
Zitat: Cells(i, 4).Value = WorksheetFunction.Large _
(Range("b:b"), 1) + 1
'dann l?sche die Kgr?sste in Spalte B:B
Cells(WorksheetFunction.Match(WorksheetFunction.Large _
(Range("b:b"), 1), Range("b:b"), 0), 2).Clear
Hallo André!

Danke, Danke und nochmals Danke, Wahnsinn, Supergeil!!! :18: 

Die negativen Werte habe ich schon eingetragen funktioniert super.
So wie Du sagst, eigentlich ganz einfach, man muss halt wissen wo man
was eintragen darf.
Die positven Werte mach ich morgen, bin schon  ziemlich müde.

Vielen Dank und liebe Grüße aus Wien,

Atnik
Hallo Atnik,

zu dem Problem mit dem Large-Fehler müsstest Du erst mal überlegen, was da passieren soll.

Du könntest z.B. am Ende der Schleife prüfen, ob noch mindestens ein Wert von B6 bis Bi vorhanden ist und wenn nicht, die Schleife dann verlassen. Wenn noch einer vorhanden ist, könnte es passieren, das der vom Small gelöscht wird, dann müsstest Du schauen, dass Du gleich danach die Schleife verlässt oder zumindest die beiden Large-Zeilen nicht mehr ausführst.