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
 

Anhänge

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.
 

josef24

Erfahrenes Mitglied
Danke für dein Interesse, bei mir kommt es nicht auf einen Tag mehr oder weniger an. Es wäre mir verständlicherweise sehr daran gelegen, wenn es doch noch funktionieren würde. Habe die Datei verändert. Aber auch hier ist es nicht möglich über die USERFORM die Tabelle in Bezug auf die Formeln zu aktivieren / bzw. zu verändern. Einzig der Klick in der Tabelle direkt bewirkt dann das die Formeln aktiv den entsprechenden Datensatz verändern. Gruß Josef
 

Anhänge

Zuletzt bearbeitet:

josef24

Erfahrenes Mitglied
Hallo und guten Abend. Muss mich nochmal melden bevor mich jemand bei der alten Version unterstützen möchte! Habe über suchen in Foren eine "Teillösung" gefunden und der Kode auch dahingehend verändert. Es sieht also jetzt so aus, dass der Kode alle Daten aus der USERFORM übernimmt, auch die Formelgeschichte. Was aber etwas holprig ist, ist die Verarbeitungsdauer / Übernahme der Daten aus USERFORM in die Tabelle. Bei der Originaldatei dauert es lange bis der Datensatz dann endlich übernommen ist. Aber die Daten sind dann richtig übernommen.
Ein Problem tritt allerdings noch auf wen ich in der Userform einen Datensatz zum Löschen auswähle, dann wird ein gelber Fehler markiert, wo ich nicht mehr weis wie ich dies korrigieren kann. Für diese Funktionsprobleme bitte ich um Unterstützung. Neue Datei hänge ich zum Versuchen mal an. Danke im voraus Gruß Josef
 

Anhänge

Neue Beiträge