Werte aus Userform per vba in ein bestimmtes Tabellenblatt abspeichern
#1
Hallo zusammen,

vor einiger Zeit war ich noch blutiger Anfänger in Sachen VBA-Code schreiben.......bin ich immer noch! :)

Aber ich komme langsam etwas voran....nur....ich bleibe mal wieder an einer bestimmten Stell hängen.

Ich habe mir eine Übungsmappe erstellt, in der ich ein wenig mit vba lernen möchte...es begreifen möchte.

Ich habe mir dort eine einfache Userform erstellt mit Text und Comboboxen, sowie ein paar CommandButton.

Ich möchte von dieser Userform aus die angewählten Werte aus den TextBoxen sowie den anderen Boxen in ein bestimmtes Tabellenblatt mit dem Button "speichern" per vba abspeichern.

Userform öffnen und schließen, sowie in den Comboboxen Werte in der Userform anzeigen zu lassen, habe ich schon hin bekommen.

Nun möchte ich die Werte in das besagte Tabellenbatt "Bestell-Liste" ablegen(abspeichern) können.
Und das ganze jedesmal bei einer neuen Eingabe im Blatt "Bestell-Liste" in die nächst freie Zeile eintragen lassen.

Ich schaue in dieser VBA-Programmierung aber einfach noch nicht durch.

Es wäre schön, wenn mir jemand so einen Code hier anzeigen könnte und mir vielleicht auch genau erklärt, was die Befehlszeilen in den Code bedeuten und welche Aufgaben sie haben?
Ich möchte gerne dieses Thema echt besser verstehen können.

Ich habe von Atilla, sehr, sehr hilfreiche andere Codes für ein anderes Projekt hier bekommen und deshalb ein neues für mich zum lernen von vba angefangen, um seine Codes besser zu verstehen.

Ich stelle hier mal meine Übungsmappe zur Verfügung, damit man sich genauer anschauen kann, was ich überhaupt vorhabe.


.xlsm   Viabil-Bestell-Liste.xlsm (Größe: 28,42 KB / Downloads: 43)

Vielleicht gibt es jemanden, der mir das sehr gut erklären kann und einen einfachen code für das ablegen der Werte für mich hat?

Gruß Mike
Top
#2
Hallo Mike,

hier eine Lösung für das Speichern der Informationen aus der UserForm in Deine Tabelle.

Noch eine Anmerkung zu Deinem Code aus dem Modul.
Du solltest die Userform "Modeless" öffnen, andernfalls machen Deine Buttons
für das anzeigen, der Tabellen "Bestell-Liste" bzw. "Hauptmenü" keinen Sinn, da
Du keine Änderungen in den Tabellen vornehmen kannst.

Code:
Sub zeig_UserForm1()

  UserForm1.Show vbModeless
End Sub

Ich habe den Code entsprechend ergänzt.

In Deiner UF fehlt meiner Meinung nach eine Textbox für die Erfassung der Bestellmenge.

Ich denke, es werden noch viele Fragen kommen, aber das ist ein Anfang.
Für Deinen Ergeiz und Dein Interesse VBA zu lernen, bewundere ich Dich :28:.
So hat es bei mir auch angefangen.
Erklärungen findest Du im Code.


.xlsm   Viabil-Bestell-Liste_Max.xlsm (Größe: 28,1 KB / Downloads: 33)

Gruß
Max

Hatte da einen kleinen Logikfehler hinsichtlich der Bestellnummer.
Habe jetzt einen weitere Button eingefügt (Position speichern).
Ich denke eine Bestellung kann mehrere Positionen enthalten, dazu sind dann
aber noch weitere Anpassungen sowohl in der UF wie auch in Deiner Tabelle notwendig.
Der Button "Bestellung abschließen" schließt die UF und erhöht den Wert in der Tabelle
Parameter.


.xlsm   Viabil-Bestell-Liste_Max_1.1.xlsm (Größe: 28,76 KB / Downloads: 51)
[-] Folgende(r) 1 Nutzer sagt Danke an Max für diesen Beitrag:
  • Mike4711
Top
#3
Hallo,

vieln Dank für die tolle Erklärung.
Bin gerade noch auf der Arbeit, habe aber schon ein wenig getestet und ein wenig weiter gearbeitet damit.

Genauer kann ich es später mal zu Hause noch austesten und weieter Dinge ausprobieren.

Eine Textbox mit Angabe von Menge habe ich in der Userform mit eiungebaut und nach deinem Code angepasst. Du hattest recht, diese Angabe hatte ioch in der Userform vergessen. :)

Was ich noch in der Userform einbauen muss einen festen Begriff "Direktlieferung", der beim Artikel ablegen, mit in die Bestellliste in die Spalte "F" übertragen werden muss.

Wie mache ich das eigentlich?...kann mann ein Textfeld aus der Userbox auch in ein Tabellenblatt übertragen?

Hier meien Mappe noch einmal, wo ich nach diner Erklärung 2 weitere Spalten hab übertagen lassen habe:

Menge und Kunde/Ort


.xlsm   Viabil-Bestell-Liste_Max_1.1.xlsm (Größe: 31,24 KB / Downloads: 24)

Gruß Mike
Top
#4
Hallo Mike,

ich würde das über einen Optionsbutton lösen, so wie hier eingebaut.

Schau's Dir mal an.


.xlsm   Viabil-Bestell-Liste_Max_1.2.xlsm (Größe: 27,82 KB / Downloads: 101)

Gruß
Max
[-] Folgende(r) 1 Nutzer sagt Danke an Max für diesen Beitrag:
  • Mike4711
Top
#5
Hallo Max,


das wäre ne Möglichkeit.

Doch wenn ich diese Mappe so weiter spinne und auch so hin bekomme und viele VBA-Codes selbe hin bekomme und verstehe,

würde ich lieber in der Spalte das Wort Direktlieferung in die Spalte eintragen können.

Wenn ich die Mappe hin bekomme, möchte ich diese meiner jungen Kollegin zur Verfügung stellen und wie ich sie kenne, will die immer dieses Wort drinnen stehen haben. ;)

Sonst, ist dein Vorschlag auch eine gute Lösung:)

Gruß Mike
Top
#6
Hallo Mike,

das ist ganz einfach.
Schreib einfach zwischen die Anführungszeichen, da wo jetzt "X" steht Direktlieferung.

Nur eigentlich heißt die Spalte so... Das ist schon doppelt gemoppelt :s.

Gruß
Max
[-] Folgende(r) 1 Nutzer sagt Danke an Max für diesen Beitrag:
  • Mike4711
Top
#7
Sorry...da wäre meine Kollegin pingelig ;)

Ich probiere das mal aus.

brauche ich eigentlich die Tabelle "Parameter"?

Bestellnummer muss ich selber eingeben können, da sie so nicht fortlaufend genutzt werden kann.

Gruß Mike
Top
#8
Nein brauchst Du nicht.

Ich nehme das morgen wieder raus.
Heißt das, dass jede Zeile auch eine neue Bestellnummer ist?
Dann müsste ich einen Teil meiner heutigen Ergänzungen auch wieder rausnehmen.

Gruß
Max
[-] Folgende(r) 1 Nutzer sagt Danke an Max für diesen Beitrag:
  • Mike4711
Top
#9
Hallo Max,

das mit dem eintragen "Direktlieferung" als Wort in der Tabelle hat geklappt.

Was mir aufgefallen ist beim abspeichern des Artikels (also auf Klick vom Button "Position speichern", sind in der userform alle
Textboxen deaktiv. kann keine eingaben mehr dort machen.

Das habe ich in deinem Code gefunden:

Code:
Private Sub CommandButton1_Click()
'Variable zur Ermittlung der letzten verwendeten Zeile in Tabelle1
Dim ZeileMax As Long
'Variable zum Schreiben der Werte aus UserForm in in die erste freie Zeile
Dim Zeile As Long

With Tabelle1
'Alternativ kannst Du auch statt Tabelle1 Sheets("Bestell-Liste") verwenden
'Diese Schreibweise hätte allerdings den Nachteil, dass sollte ein Anwender die Tabelle umbenennen
'würde dieser Schreibweise dazu führen, das der Code nicht mehr funktioniert.

'Ermittlung der letzten verwendeten Zeile
ZeileMax = .UsedRange.Rows.Count
'Erste freie Zeile = ZeileMax + 1 Zeile
Zeile = ZeileMax + 1

'Schreibt die Werte aus TextBox1 in die erste freie Zeile in Spalte A
.Range("A" & Zeile).Value = Me.TextBox1.Value
'Schreibt die Werte aus TextBox2 in die erste freie Zeile in Spalte B
.Range("B" & Zeile).Value = Me.TextBox2.Value
'Prüft ob der Options-Button aktiviert ist.
If Me.OptionButton1 = True Then
    'Wenn ja wird in die erste freie Zeile in Spalte C ein "X" eingetragen
    .Range("C" & Zeile).Value = "Direktlieferung"
End If
'Schreibt die Werte aus ComboBox1 in die erste freie Zeile in Spalte D
.Range("D" & Zeile).Value = Me.ComboBox1.Value
'Schreibt die Werte aus ComboBox1 in die erste freie Zeile in Spalte E
.Range("E" & Zeile).Value = Me.TextBox3.Value
'Schreibt die Werte aus ComboBox3 in die erste freie Zeile in Spalte F
.Range("F" & Zeile).Value = Me.ComboBox3.Value
'Schreibt die Werte aus ComboBox3 in die erste freie Zeile in Spalte J
.Range("J" & Zeile).Value = Me.ComboBox2.Value

    '[color=#FF0000]Die folgenden Anweisungen beziehen sich auf die Userform
    'Nach einem Klick auf Position speichern
    With Me
        'wird das Feld Bestellnummer deaktiviert
        .TextBox1.Enabled = False
        'das Feld Datum ebenfalls
        .TextBox2.Enabled = False
        'genauso die ComboBox "Kunde"
        .ComboBox2.Enabled = False
        'und die ComboBox "Name des Bestellers
        .ComboBox3.Enabled = False
        'Die ComboBox "Artikel" wird geleert
        .ComboBox1.Value = ""
        'gleiches gilt für die TextBox "Menge"
        .TextBox3.Value = ""[/color]
    End With

End With
End Sub

ich glaube im rot markierten Bereich, werden nach Position speichern, alle Textboxen gesperrt


...wieso dieses?

wenn ich unter der selben Bestellnummer einen weitern Artikel wählen möchte, muss ich die Userform schließen, damit es geht?


Gruß Mike
Top
#10
(12.01.2015, 23:19)Max schrieb: Nein brauchst Du nicht.

Ich nehme das morgen wieder raus.
Heißt das, dass jede Zeile auch eine neue Bestellnummer ist?
Dann müsste ich einen Teil meiner heutigen Ergänzungen auch wieder rausnehmen.

Gruß
Max


Eigentlich ja....jede Zeile könnte eine andere Bestellnummer haben....meistens.
es kommt aber auch vor, das zu einer Bestellung 2 oder 3 Artikel bestellt werden.

Gruß Mike

bin jetzt gleich off....ich danke dir
Top


Gehe zu:


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