Registriert seit: 28.05.2017
Version(en): 365
Hi Leute, ich bin auf der Suche nach den richtigen Codes - habe einige Videos durch und auch einiges gegoogled ... allerdings finde ich nicht genau meine Lösung. Ich bin was VBA angeht halt erst am Anfang. Code: Private Sub CommandButton_Hinzufuegen_Click()
Dim last As Integer
last = ThisWorkbook.Sheets("Datenhinterlegung").Cells(Rows.Count, 1).End(xlUp).Row + 1
ThisWorkbook.Sheets("Datenhinterlegung").Cells(last, 1).Value = TextBox_Name.Value
End Sub
Ich bin davon ausgegangen, dass er mit dieser Formel die erste verfügbare Zelle in Spalte A befüllt - tut er aber nicht. Gibt es da eine Anpassung? Es kommt nämlich vor, dass zwischendurch einige Zellen gelöscht werden. Dazu kommt das Problem, dass ich folgende Code-Zeile noch mit dabei habe. Code: ThisWorkbook.Sheets("Datenhinterlegung").Cells(last, 2).Value = ComboBox_Funktion.Value
Hier besteht das Problem, dass er die Daten aus der Combobox in die gleiche Zeile wie die Daten der Textbox schreiben soll, nur halt in Spalte B. Habt ihr da eine Idee?
Registriert seit: 11.04.2014
Version(en): Office 365
15.08.2018, 18:27
(Dieser Beitrag wurde zuletzt bearbeitet: 15.08.2018, 18:28 von mumpel.)
Hallo!
Ich kann da keinen Fehler erkennen. Sollte eigentlich funktionieren. Leerzeilen zwischendrin werden dabei aber nicht berücksichtigt.
Gruß, René
Registriert seit: 28.05.2017
Version(en): 365
Gäbe es denn keine Formel, die die nächste freie Zelle beschreibt? Bei vielen Löschungen und neuen Eintragungen wird es irgendwann sehr lang :)
Registriert seit: 02.12.2017
Version(en): Office 365
Wie sieht denn jetzt der komplette code dazu aus?
Registriert seit: 13.04.2014
Version(en): 365
Hi,
vermeide Leerzeilen zwischen den gefüllten, dann hast Du keine Probleme.
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
15.08.2018, 18:41
(Dieser Beitrag wurde zuletzt bearbeitet: 15.08.2018, 18:41 von MisterBurns.)
Ich vermute, dass aufgrund des Löschens von Zeilen der Rows.Count-Teil irgendwie ein falsches Ergebnis ausgibt. Lass dir mal mittels das Ergebnis ausgeben. Falls das nicht das gewünschte Ergebnis bringt, versuch es mit Code: Private Sub CommandButton_Hinzufuegen_Click()
Dim last As Integer With ThisWorkbook.Sheets("Datenhinterlegung") last = .Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row .Cells(last, 1).Value = TextBox_Name.Value End With
End Sub
Schöne Grüße Berni
Registriert seit: 28.05.2017
Version(en): 365
Hey ihr, freut mich, dass ihr mir helfen wollt. Das mit den Leerzeilen vermeiden, da weiß ich noch nicht, ob ich das hinbekomme. Ich schildere euch erst ein Mal, was ich mit diesem Code bezwecken möchte: Die Userform soll dafür da sein, einen neuen Benutzer anzulegen. Dieser wird dann in einem versteckten Tabellenblatt abgelegt und in der Folge weiterverwendet. Die Userform soll sich mit einem Button öffnen. Im nächsten Schritt wollte ich dann noch eine Userform basteln, mit der sich eine Liste aller Benutzer öffnet, um dann einen auszuwählen und löschen zu können - dabei würde dann eine Leerzeile entstehen. Der Code bislang: Code: Private Sub CommandButton_Cancel_Click()
'Userform schließen Unload UserForm_Mitarbeiter
End Sub
Private Sub UserForm_Initialize()
'Startwerte Textboxen UserForm_Mitarbeiter.TextBox_Name.Value = "Nachname eingeben" UserForm_Mitarbeiter.TextBox_Resturlaub.Value = "Resturlaub." UserForm_Mitarbeiter.TextBox_Urlaubsanspruch.Value = "Urlaubsanspruch" 'Liste für die Funktionen With UserForm_Mitarbeiter.ComboBox_Funktion .AddItem "Chef" .AddItem "Vertreter" .AddItem "Mitarbeiter" End With End Sub
Private Sub CommandButton_Hinzufuegen_Click()
Dim last As Integer
last = ThisWorkbook.Sheets("Mitarbeiter").Cells(Rows.Count, 1).End(xlUp).Row + 1
ThisWorkbook.Sheets("Mitarbeiter").Cells(last, 1).Value = TextBox_Name.Value ThisWorkbook.Sheets("Mitarbeiter").Cells(last, 2).Value = ComboBox_Funktion.Value If CheckBox_Teil = True Then ThisWorkbook.Sheets("Mitarbeiter").Cells(last, 3).Value = "Ja" If CheckBox_Teil = False Then ThisWorkbook.Sheets("Mitarbeiter").Cells(last, 3).Value = "Nein" If CheckBox_Tag = True Then ThisWorkbook.Sheets("Mitarbeiter").Cells(last, 4).Value = "Ja" If CheckBox_Tag = False Then ThisWorkbook.Sheets("Mitarbeiter").Cells(last, 4).Value = "Nein" ThisWorkbook.Sheets("Mitarbeiter").Cells(last, 5).Value = TextBox_Resturlaub.Value ThisWorkbook.Sheets("Mitarbeiter").Cells(last, 6).Value = TextBox_Urlaubsanspruch.Value
End Sub
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
15.08.2018, 18:47
(Dieser Beitrag wurde zuletzt bearbeitet: 15.08.2018, 18:47 von Käpt'n Blaubär.)
Hallo, Zitat:last = ThisWorkbook.Sheets("Datenhinterlegung").Cells(Rows.Count, 1).End(xlUp).Row + 1 das ist doch bereits die Zeile, die Du so händeringend suchst (... stammt aus Deinem eigenen Code). Nur durch den von Edgar bereits beschriebenen Blödsinn mit den Leerzeilen Zitat:vermeide Leerzeilen zwischen den gefüllten, dann hast Du keine Probleme. hebelst Du Dir selbst den Code aus.
Registriert seit: 28.05.2017
Version(en): 365
Wenn ich den Code ausführe und etwas damit eintragen lasse.... so zum Beispiel 4 Personen. Diese stehen dann in den ersten vier Zeilen - so wie es sein soll. Wenn ich nun aber Person 3 aus Zeile 3 rauslösche und den Code erneut ausführe und eine Person eintrage, dann wird diese Person in Zeile 5 und nicht in Zeile 3 geschrieben. Ziel wäre hier die Zeile 3
Registriert seit: 13.04.2014
Version(en): 365
Hi,
statt die Daten zu löschen ,lösche einfach die ganze Zeile. Wenn das eine Mitgliederliste werden soll, dann ist das Löschen ein absolutes NoGo!
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
|