Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA-Grundkurs :)
#1
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?
Antworten Top
#2
Hallo!

Ich kann da keinen Fehler erkennen. Sollte eigentlich funktionieren. Leerzeilen zwischendrin werden dabei aber nicht berücksichtigt.

Gruß, René
Antworten Top
#3
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 :)
Antworten Top
#4
Wie sieht denn jetzt der komplette code dazu aus?
Eine Menge reden, aber nichts sagen können viele...
Antworten Top
#5
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.
Antworten Top
#6
Ich vermute, dass aufgrund des Löschens von Zeilen der Rows.Count-Teil irgendwie ein falsches Ergebnis ausgibt.
Lass dir mal mittels

Code:
Debug.print last
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
Antworten Top
#7
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
Antworten Top
#8
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.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#9
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
Antworten Top
#10
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.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste