Zum Inhalt springen

[VBA] Userform Excel Tabelle auslesen


zerberos

Empfohlene Beiträge

Hallo,

bin momentan dabei ne Abrechnung zu programmieren (http//www.sebastian-leppert.de/abrechnungsbogen.xls).

Nun hänge ich an einer bestimmten Stelle. Ich möchte jetzt in den beiden UserForms die ich gemacht habe Normal und Kaltgetränke, die Artikel aus Artikelliste n und Artikelliste k mit gewünschter Menge eingeben. Danach sollen die ausgesuchten Artikel mit Menge wie die Daten aus dem ersten UserForm mit in das generierte Formular eingetragen werden.

Und momentan weiß ich nicht so Recht wie ich das machen soll. Ist leider auch erst mein erstes Projekt mit VBA. Wäre über Tipps und Erklärungen zu meinen Problem dankbar….

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich hab da was zusammen geschrieben,

füge den code zu UserForm2,

füge eine Listbox Namens "lstKunde"

und teste mal aus ob Dich das weiter bringt:

Private Sub UserForm_Initialize()
Dim Bezeichnung() As String
Dim Wert1() As String
Dim Wert2() As String
Dim AnzZeilen As Integer
AnzZeilen = Sheets("artkellistek").UsedRange.Rows.Count
For i = 1 To AnzZeilen
ReDim Preserve Bezeichnung(i)
ReDim Preserve Wert1(i)
ReDim Preserve Wert2(i)
Bezeichnung(i) = Sheets("artkellistek").Cells(i, 1).Value
Wert1(i) = Sheets("artkellistek").Cells(i, 2).Value
Wert2(i) = Sheets("artkellistek").Cells(i, 3).Value
lstKunde.AddItem Bezeichnung(i) & " / " & Wert1(i)
lstKunde.AddItem Bezeichnung(i) & " / " & Wert2(i)
Next
End Sub
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

danke schon mal. Bringt mich schon mal etwas weiter. Nur jetzt ist noch das Problem mit der Darstellung

Laut Aufgabenstellung soll das so dargestellt werden:

Artikelname | ek-preis |vk preis | menge (hier muss was eingetragen werden können)

und momentan wird das ja alles untereinander dargestellt

sorry für meine vielen fragen. ist halt mein erstes projekt in vba

Hab die aktuelle datei wieder hochgeladen…

Danke euch!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Eigentlich könntest Du es mit paar änderungen selber schaffen,

musst halt den code genauer anschauen und einwenig nachdenken.

Wenn du nicht weisst was ein code macht, starte ein Programm mit F8 im Editorfernster, dann kannst Du genau beobachten was ein Programm macht, wenn du mit dem Cursor an eine Variable gehst, wird der Inhalt angezeigt.

Du musst Dir schon Mühe geben, es ist ja Deine Aufgabe, und du würdest mehr profitieren wenn du die selbst erledigen kannst.

folgende änderungen:

Listbox raus

Combobox Namens cmbKaltGetr rein

Textbox Namens txtMenge rein

den Code komplett ersetzen (davor genau vergleichen, dann weisst Du was ich gemacht habe)

gruss

Private Sub UserForm_Initialize()
Dim Bezeichnung() As String
Dim EK() As String
Dim VP() As String
Dim AnzZeilen As Integer
AnzZeilen = Sheets("artkellistek").UsedRange.Rows.Count
For i = 1 To AnzZeilen
ReDim Preserve Bezeichnung(i)
ReDim Preserve EK(i)
ReDim Preserve VP(i)
Bezeichnung(i) = Sheets("artkellistek").Cells(i, 1).Value
EK(i) = Sheets("artkellistek").Cells(i, 2).Value
VP(i) = Sheets("artkellistek").Cells(i, 3).Value
cmbKaltGetr.AddItem Bezeichnung(i) & " / " & EK(i) & " / " & VP(i)
Next
cmbKaltGetr.ListIndex = 0
End Sub
Private Sub CommandButton1_Click()
Dim meineAuswahlGesamt As String
meineAuswahlGesamt = cmbKaltGetr.Value & " Menge: " & txtMenge.Text
MsgBox meineAuswahlGesamt
End Sub[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

ok danke

wenn ich das richtig versanden hab werden die ausgewählten sachen ja in einem array gespecihert

kennt eine ne anleitung wo drinnen steht wie ich nen array in nen excel datenblatt eintrage?

Bis jetzt hab ich ja nur einfache textboxen gehabt deren inhalt ich einfach mit

With Range("B3")

.Value = TextBox1

End With

eingetragen hab. Geht das mit dem array genauso?

Link zu diesem Kommentar
Auf anderen Seiten teilen

hi,

meineAuswahlGesamt = cmbKaltGetr.Value & " Menge: " & txtMenge.Text

ist in diesem fall kein array, ist nur eine textvariable in der bezeichnung und menge zusammen stehen.

wenn du die getrennt brauchst:


Bezeichnung=cmbKaltGetr.Value

Menge=txtMenge.Text


Sheets("vk-beleg").Range("A13").Value = Bezeichnung

Sheets("vk-beleg").Range("B13").Value = Menge

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 Wochen später...

Hallo

also ich häng immer noch an meinen Problem

ich hab jetzt eine Listbox mit 3 spalten die Artikel ausliest

hier der Quellcode:

Private Sub UserForm_Initialize()

With ListBox1

.ColumnCount = 3

.RowSource = "artikellisten!A1:C23"

.ColumnHeads = False

.ColumnWidths = "10cm;3cm;3cm"

.MultiSelect = fmMultiSelectExtended

End With

End Sub

Aber das ist irgendwie noch nicht das wahre. Erstens weis ich jetzt nicht, wie ich das Problem mit der Eingabe für die Anzahl der bestellten Waren regeln soll (Kann man vielleicht eine 4 spalte in die Listbox einfügen und das dort die Menge eingetragen werden kann?).

Und das 2 Problem ist, das als Datenquelle ja ein bestimmter Bereich angeben ist. Aber wenn ich neue Artikel hinzufüge muss ich ja jedes Mal den Quellcode anpassen, da sich der Bereich ja dann vergrößert

Die aktuelle Datei gibt’s wieder unter http://www.sebastian-leppert.de/abrechnungsbogen.xls

Oder sollte ich vielleicht ohne die Listbox arbeiten?

Vielen Dank

Sebastian

Link zu diesem Kommentar
Auf anderen Seiten teilen

hi,

Aber wenn ich neue Artikel hinzufüge muss ich ja jedes Mal den Quellcode anpassen, da sich der Bereich ja dann vergrößert

du gibst hier einen genauen bereich an:

.RowSource = "artikellisten!A1:C23"

warum?

wenn du dir den code ansiehst denn du schon von mir bekommen hast:

AnzZeilen = Sheets("artikellistek").UsedRange.Rows.Count

hier werden die zeilen gepeichert, egal wieviele es sind.

Erstens weis ich jetzt nicht, wie ich das Problem mit der Eingabe für die Anzahl der bestellten Waren regeln soll (Kann man vielleicht eine 4 spalte in die Listbox einfügen und das dort die Menge eingetragen werden kann?).

es gibt verschiedene möglichkeiten, du musst halt überlegen was für dich am besten ist.

ich würde es per doppelklick machen:

anwender klickt 2 mal auf eine zeile, geht z.B eine einfache InputBox auf, die nach werten fragt, oder du programmierts einen neuen dialog, anstatt der InputBox

so inetwa:


Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

    myVal2 = ListBox1.Text

    myVal1 = InputBox("Blabla", "blabla")

End Sub

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...