Formel über alle Zeilen mit VBA Code

josef24

Erfahrenes Mitglied
Guten Tag zusammen. Habe einen VBA-Kode im Tab1 hinterlegt der mir jeweils die Formeln entsprechend in die Folgezeilen / Spalten einfügen soll. Leider gelingt mir das nur für die jeweils 1.te Zeile korrekt und bei den nachfolgenden wird dies nicht richtig erkannt, so das z. B. die PLZ aus der 2ten Zeile auf die folgenden übertragen wird, was natürlich falsch ist. Könnte mir hier jemand weiter helfen? Danke bis dahin und Gruß Josef
 

Yaslaw

n/a
Moderator
Ich kann den Code selber nicht testen.
Aber die abgefüllten Formeln stimmen schon und funktionieren bei mir. Du musst das Worksheet noch neu berechnen!

Zudem solltest du in deinem Code angeben, auf welchem Sheet die Ranges sind. Wenn da mal eine neue Tabelle vorne rein kommt, dann wird dein Code auf diese angewendet.

Visual Basic:
Dim ws As Worksheet
Set ws = Worksheets("Tab1")

'hier die Tabelle ws mitgeben
ws.Range("G2").FormulaLocal = "=WENN($H2<>"""";INDEX(PLZ!$A:$A;VERGLEICH($H2;PLZ!$C:$C;0));"""")"
'usw.
ws.Range("AB2:AB" & irow).FillDown

'Neu berechnen
ws..Calculate
 

josef24

Erfahrenes Mitglied
Danke vielmals, Kode eingebaut und klappt perfekt. Eine Frage hätte ich noch: Wie muss der Einstieg in den Kode sein, wenn ich die Daten über eine Eingabemaske in die Tab1 befülle. Der Kodebeginn:
Code:
Private Sub Workbook_Open()
würde ja nur aktiv werden, wenn ich mit (den Code ) anklicken ausführen lassen.
Ich befülle aber per Eingabemaske (Userform1) und dann reagiert der Kode nicht. Wie müsste ich den Einstiegskode schreiben, um dies zu erreichen. Sobald in der Tabelle Werte verändert werden sollte auch aktualisiert werden. Habe trotz Versuchen das leider nicht hin bekommen.

Code:
Option Explicit
  Sub BisZurLetztenZeile() ' geht, es passt so
  Dim irow As Integer
    Dim rowNr As Integer
    Dim lngzeilemax As Long
    Dim ws As Worksheet
        Set ws = Worksheets("ArbTab")
        irow = Cells(Rows.Count, 1).End(xlUp).Row
   ws.Range("G2").FormulaLocal = "=WENN($H2<>"""";INDEX(PLZ!$A:$A;VERGLEICH($H2;PLZ!$C:$C;0));"""")"
   ws.Range("O2").FormulaLocal = "=WENN(UND(M2<>""p"";M2<>""sz"";M2<>"""");M2-HEUTE();"""")"

Danke und Gruß Josef
 
Zuletzt bearbeitet:

Yaslaw

n/a
Moderator
Schreib eine unabhängige Sub oder Funktion (weiss grad nicht welches) und erstelle im Userform ein Button den dem du die Funktion hinterlegst.

Ich kann dir grad schlecht helfen, da ich nie mit Userforms arbeite
 

Yaslaw

n/a
Moderator
Download - ist auf der arbeit nicht möglich. Mal sehen, wenn ich zuhause mal dran denke. Frühestens am Samstag.