Mit Userform Daten in eine Tabelle eintragen
#1
Hallo Zusammen , 

ich übe gerade eine Userform zu erstellen . Momentan hab ich  eine Userform  womit ich z.B.  die Geburtstage meiner Bekannten in eine Tabelle eintragen möchte. Ich benutze zurzeit dafür folgenden Code : 

Private Sub Button_Take_Click()
'Eingabe der Schaltfläche in die Arbeitsmappe übernehmen

Dim last As Integer
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1


        ActiveSheet.Cells(last, 1).Value = meinFormular.Textbegriff1.Value ' Geburtsdatum = A1
        ActiveSheet.Cells(last, 2).Value = meinFormular.Textbegriff2.Value ' Nachname = B1
        ActiveSheet.Cells(last, 3).Value = meinFormular.Textbegriff3.Value ' Vorname = C1 

End SUB 

Das blöde ist das die Tabelle immer im oberen Eck beginnt (A1 bis C1 ) . Ich würde gerne die Tabelle im mittleren Bereich haben z.B. (E13 bis G13). Meine Frage ist nun wie kann ich den Code umstellen das meine Tabelle auch mitten im Blatt sein kann ? Und wäre es auch möglich die Tabelle von Links nach rechts zu befüllen ? Ich hab mal eine Beispiel Datei angefertigt . Hoffe es ist soweit verständlich was ich meine :)  

Vielen Dank schon mal für die Hilfe :)
Top
#2
So, ich mache mich mal wieder unbeliebt.

Abgesehen davon dass vermutlich Outlook die passendere Anwendung ist braucht kein Mensch eine Userform um Daten in eine Tabelle einzutragen.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Top
#3
Hi das sollte nur als Beisiel dienen , wie gesagt ich übe das macht man mit einfachen Beispielen ;)
Top
#4
Hallo,

dann prüf doch einfach welchen Wert deine Variable last hat und wenn die kleiner als deine gewünschte Startzeile ist, dann setzte sie auf den entsprechenden Wert.
Wenn du erst in Spalte E anfangen willst, dann kannst du doch einfach den Spaltenwert entsprechend wählen.

Im gezeigten Beispiel wird der erste Datensatz in E13 / F13 / G13 erfasst.

Was du mit "von links nach rechts" meinst ist mir nicht klar. Deine Daten werden doch von links nach rechts in die Zellen geschrieben.


Code:
Private Sub Button_Take_Click()
'Eingabe der Schaltfläche in die Arbeitsmappe übernehmen

Dim last As Integer
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1

If last < 13 Then last = 13
ActiveSheet.Cells(last, 5) = CDate(meinFormular.Textbegriff1) ' Geburtsdatum = A1
ActiveSheet.Cells(last, 6) = meinFormular.Textbegriff2.Value ' Nachname = B1
ActiveSheet.Cells(last, 7) = meinFormular.Textbegriff3.Value ' Vorname = C1

End Sub


Gruß Werner
[-] Folgende(r) 1 Nutzer sagt Danke an Werner.M für diesen Beitrag:
  • Andreas86
Top
#5
Cool hat geklappt Danke :) 

ja da gebe ich dir Recht  hatte mich nur interessiert wie man das hätte umsetzen können .

Vielen Dank noch einmal :) 

Gruß
Andreas
Top
#6
Jetzt hab ich leider ein ganz anderes Problem . 

Habe ein 2 Tabellenblatt gemacht von wo aus ich meine Userform starten kann. Dort sollen dann die Daten eingegeben werden und anschließend im ersten Tabellenblatt eingetragen werden . Hab den Code wie folgt umgeschrieben : 
Code:
Private Sub Button_Take_Click()
'Eingabe der Schaltfläche in die Arbeitsmappe übernehmen

Dim last As Integer
last = Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row + 1

If last < 13 Then last = 13

Worksheets("Tabelle1").Cells(last, 5) = CDate(meinFormular.Textbegriff1) ' Geburtsdatum = A1
Worksheets("Tabelle1").Cells(last, 6) = meinFormular.Textbegriff2.Value ' Nachname = B1
Worksheets("Tabelle1").Cells(last, 7) = meinFormular.Textbegriff3.Value ' Vorname = C1

End Sub


Das Problem ist, das immer die erste Zeile überschrieben wird und nicht die darunterliegende :(  Weiß jemand wo mein Fehler in dem Code liegt ? 

Danke
Top
#7
Hallo,

Stichwort Referenzierung.
Um auf das richtige Blatt zu referenzieren muss vor jedes Range Objekt (Range, Cells, Rows) das Blatt geschrieben werden.
Da das eine Menge Schreibarbeit ist, macht man das besser mit einer With - End With Klammer.
Da wird dann durch einen Punkt vor den Range Objekten (Range, Cells, Rows) auf das Blatt referenziert, das im With angegeben ist.

Code:
Private Sub Button_Take_Click()
'Eingabe der Schaltfläche in die Arbeitsmappe übernehmen
Dim last As Integer

With Worksheets("Tabelle1")
   last = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
   If last < 13 Then last = 13
   .Cells(last, 5) = CDate(meinFormular.Textbegriff1) ' Geburtsdatum = A1
   .Cells(last, 6) = meinFormular.Textbegriff2.Value ' Nachname = B1
   .Cells(last, 7) = meinFormular.Textbegriff3.Value ' Vorname = C1
End With

End Sub


Gruß Werner
Top
#8
ich hab den Code von dir so eingegeben aber er überschreibt immer noch die erste Zeile in meiner Tabelle .

Gruß
Andreas
Top
#9
Hallo,

leider kenne ich ja deine Tabelle nicht.

Aber mal als Frage:
Du stellst hier

Code:
last = .Cells(.Rows.Count, 1).End(xlUp).Row + 1

die letzte beschriebene Zelle in Spalte A fest. Kann es sein, dass in Spalte A keine Daten vorhanden sind?

Dann mußt du die Zahl in der Klammer (das ist die Spaltennummer) entsprechend ändern. 1=Spalte A, 2=Spalte B .....


Gruß Werner
[-] Folgende(r) 1 Nutzer sagt Danke an Werner.M für diesen Beitrag:
  • Andreas86
Top
#10
ja genau daran lag es :)  Ich hatte eigentlich die Tabelle hochgeladen aber irgendwie finde ich die nicht :( sorry hatte auch nicht mehr darauf geachtet ob die Tabelle angezeigt wird . aber jetzt funktioniert es ja :) 

Ach jetzt weiß ich warum die Tabelle nicht hochgeladen wurde hatte vergessen auf hinzufügen zu klicken hatte die Datei nur ausgewählt  Dodgy


Angehängte Dateien
.xlsm   Test 22Text.xlsm (Größe: 22,96 KB / Downloads: 12)
Top


Gehe zu:


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