Hallo Liebe Community,
Ich komme an meine Wissensgrenze und würde mich tierisch über Hilfe freuen!
in a Nutshell: Ich möchte folgende Formel die ich ohne VBA nutze: [=WENNNV(INDEX(Datenbank!K:K;VERGLEICH(Kurzzeitnutzung!B2;Datenbank!D:D;0));"")]
in VBA einfügen.
Ich habe eine Userform erstellt, indem man Daten in Textboxen schreiben kann. Mit einem Commandbutton schreiben sich die daten dann in das Sheet Kurzzeitnutzung.
auf Basis der Daten die aus einer der Textboxen in die Spalte "B" im Tabellenblatt "Kurzzeitnutzung" geschrieben werden, sollen weitere Spalten mit einem Index-Vergleich immer aus Spalte "D" TabellenBlatt "Datenbank" die Ergebnisse aus Spalte "K" aus dem Tabellenblatt "Datenbank" befüllt werden. WennNV soll "Keine Daten" eingefügt werden.
Die Daten werden beim Hinzufügen immer in die letzte Zeile geschrieben. Daher weiß ich auch nicht wie ich die Formel umschreiben muss, weil der Wert in Spalte "B" in der Zeile variiert. Aktuell habe ich das so gelöst das ich die Zeilen im Tabellenblatt bis weit unten mit der Formel befüllt habe und die WennNV mit "" angegeben habe umgangen. Das ist aber kein Zustand.
Hier der code des Commandbuttons Hinzufügen:
____________________________________________________
Private Sub CommandButtonHinzufügen_Click()
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Kurzzeitnutzung")
Set dh = ThisWorkbook.Sheets("Datenbank")
Dim last_row As Long
Dim z As Long, s As Integer
last_row = Application.WorksheetFunction.CountA(sh.Range("A:A"))
sh.Range("A" & last_row + 1).Value = "=row() -1"
sh.Range("B" & last_row + 1).Value = Me.TextBoxzeichenanlegen.Value
sh.Range("I" & last_row + 1).Value = Me.ComboBoxFunk.Value
sh.Range("J" & last_row + 1).Value = Me.TextBoxEinganganlegen.Value
sh.Range("K" & last_row + 1).Value = Me.ComboBoxStatus.Value
sh.Range("M" & last_row + 1).Value = Me.ComboBoxDL.Value
sh.Range("N" & last_row + 1).Value = Me.TextBoxabgegebenanlegen.Value
sh.Range("O" & last_row + 1).Value = Me.TextBoxabgeholtanlegen.Value
sh.Range("L" & last_row + 1).Value = Me.TextBoxinfoanlegen.Value
sh.Range("P" & last_row + 1).Value = Now
sh.Range("Q" & last_row + 1).Value = Me.TextBoxauftrag
End sub
____________________________________________________
ich möchte hier sh.Range("G" & last_row +1).Value = =WENNNV(INDEX(Datenbank!K:K;VERGLEICH(Kurzzeitnutzung!B2;Datenbank!D:D;0));"")
Vielleicht irgendwie so?
sh.Range("G" & last_row + 1).Value = Application.WorksheetFunction.Index(dh.Range("K:K", Match(Max(Me.TextBoxKennzeichenanlegen.Value, dh.Range("D:D", 0)))))
P.S Die Spalte "A" wird mit einer Fortlaufenden Zahl versehen, die später als IDZähler fungiert um die Zeilendaten in einer Listbox anzuzeigen.
Die Listbox matcht nach der IDZahl. Die Textboxen werden nach Doppelklick in der Listbox auch wieder mit den Werten Befüllt um sie später nochmal zu bearbeiten.
Hilfe oder Codevorschläge würde mir wirklich sehr sehr weiter helfen!
Danke Vorab und schöne Grüße
Excel_Geoff