Clever-Excel-Forum

Normale Version: Wenn Funktion...Hilfe...
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Ich möchte folgende Funktion über einen VBA-Code ausführen lassen:

Wenn A3 enthält einen Wert dann in K3 "Formel eintragen"
Wenn A4 enthält einen Wert dann in K4 "Formel eintragen"
Wenn A5 enthält einen Wert dann in K5 "Formel eintragen"
Wenn A6 enthält einen Wert dann in K6 "Formel eintragen" und so weiter...

Sobald in "A" kein Wert soll er stoppen.


Danke vorab für die Hilfe!
Moin,

auch hier stellt sich die Frage nach dem Zweck der Aktion. Das lässt sich doch auch über eine Formel erledigen. Oder du trägst die Formel direkt ein. Oder du machst die Datei so sprechend, dass jeder ohne VBA weiß, was er zu tun hat.

Viele Grüße
derHöpp
Ich möchte den Code auf verschiedene Tabellen anwenden und immer wieder aufrufen können.

Eine Formel immer wieder einzutragen und auf alle Zeilen anzuwenden ist doch umständlicher.
Hallo nochmal,

eine Formel in einem Listobjekt / Strg+T-Tabelle fügt sich automatisch ein.

Viele Grüße
derHöpp
Habe es jetzt mit dieser Formel hinbekommen:

Code:
Sub insert_formula()

' |- WIP - Insert Formula - not working -|

Dim dat As Variant
Dim rng As Range
Dim i As Long

Set rng = Range(Range("A3"), Range("A3").End(xlDown))
dat = rng
For i = LBound(dat, 1) To UBound(dat, 1)
If dat(i, 1) <> "" Then
rng(i, 11).Formula = "=iferror(I3-P3;""-9999"")"
End If
Next

'|- WIP - END -|

End Sub
Hallöchen,

Du kannst das auch über ein WorkSheet_Change-Ereignis des Tabellenblattes beim Eintragen oder Löschen von Daten in Spalte A erreichen.
Das geht auch global als Workbook_SheetChange für das ganze Dokument in DieseArbeitsmappe, im Prinzip so. Die Formel hab ich hier mal mit Hochkomma versehen, die geht so nicht.

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'Wenn die Spalte 1 und die Zeile >= 3 ist, dann
If Target.Column = 1 And Target.Row >= 3 Then
  'Wenn was in der Zelle steht, dann
  If Target.Value <> "" Then
    'Formel in L eintragen (11 Spalten weiter)
    Target.Offset(0, 11).Formula = "'=iferror(I3-P3;""-9999"")"
  'Ansonsten (  'Wenn was in der Zelle steht, dann)
  Else
    'Zellinhalt entfernen
    Target.Offset(0, 11).Value = ""
  'Ende Wenn was in der Zelle steht, dann
  End If
'Ende Wenn die Spalte 1 und die Zeile >= 3 ist, dann
End If
End Sub