Hallo, ich bin ganz neu hier und möchte Euch bitten, mir mit einem Problem zu helfen. Leider habe ich von VBA so garkeine Ahnung. Aber ich versuchs trotzdem mal.
Ich habe eine kleine Tabelle, in der 5 Warengruppen aufgeführt sind. Dazu habe ich eine Userform gebastelt, in der Positionen aus der gleichen oder aus verschiedenen Warengruppen in die Tabelle eingelesen werden sollen. Es können alsoz.B. in beiden Spalten der Userform Waren der Gruppe 3 stehen. Daher sollen die Werte in Spalte 1 und 2 entsprechen eingetragen werden und in Spalte 3 als Summe ausgegeben werden. In der Userform und in der Tabelle sollen die "Geld-Werte" auch entsprechend formatiert angezeigt werden. Ich habe nun schon einiges im Forum gelesen, aber nun komme ich nicht weiter und habe überhaupt keine Ahnung, wie ich die Daten in die Tabelle bekomme, hoffe ich auf Eure Hilfe und bedanke mich schon jetzt. Es ist immer schwierig, etwas zu erkläen. Daher habe ich die Tabelle einmal angefügt
ich habe eine Beispieldatei hochgeladen, aber nur mit einem Teilerfolg !!
Das Makro kann zwar die Daten aus der ComboBox in die Textfelder laden und nach belieben in Tabelle1 oder Tabelle3 kopieren. Mein Problem: wenn du in die Textfelder manuell Daten eingibst stimmt die Summenberechnung im Textfeld nicht!! Da bin ich mit meinem Technik Latein am Ende. Ich weiss nicht woran das liegt???
Vielleicht hat ein Kollege da den Durchblick und kann dir weiterhelfen. Unten der User Form Code für Tanja
mfg Gast 123
Code:
Const Variable in Modul1: Public Const cProdukt = "B10" 'Zelle Adresse Produkt in Tabelle1 Public Const cEingabe = "B5" 'Zelle Adress Eingabe in Tabelle3
UserForm Code: Option Explicit Dim Indx As Integer, Zeile As Integer Dim Sum1 As Currency, Sum2 As Currency Dim Menge As Long, Preis As Currency
Private Sub ComboBox1_Change() On Error GoTo Fehler Application.EnableEvents = False With Worksheets("Tabelle1").Range(cProdukt) Indx = ComboBox1.ListIndex TextBox7.Value = "" 'ges. löschen TextBox1.Value = .Offset(Indx, 1).Value TextBox2.Value = .Offset(Indx, 2).Value TextBox3.Value = .Offset(Indx, 3).Value Sum1 = .Offset(Indx, 3).Value TextBox7.Value = Sum1 + Sum2 'Format(Sum1 + Sum2, "0.00") End With Fehler: 'Events aktivieren Application.EnableEvents = True End Sub
Private Sub ComboBox2_Change() On Error GoTo Fehler Application.EnableEvents = False With Worksheets("Tabelle1").Range(cProdukt) Indx = ComboBox2.ListIndex TextBox7.Value = "" 'ges. löschen TextBox4.Value = .Offset(Indx, 1).Value TextBox5.Value = .Offset(Indx, 2).Value TextBox6.Value = .Offset(Indx, 3).Value Sum2 = .Offset(Indx, 3).Value TextBox7.Value = Sum1 + Sum2 'Format(Sum1 + Sum2, "0.00") End With Fehler: 'Events aktivieren Application.EnableEvents = True End Sub
Private Sub CommandButton3_Click() Dim Bereich As String 'Eingabe buchen If ActiveSheet.Name = "Tabelle1" Then Bereich = cProdukt If ActiveSheet.Name = "Tabelle3" Then Bereich = cEingabe With ActiveSheet.Range(Bereich) Indx = ComboBox1.ListIndex If Indx > -1 Then .Offset(Indx, 1).Value = TextBox1.Value .Offset(Indx, 2).Value = TextBox2.Value .Offset(Indx, 3).Value = TextBox3.Value 'In Tabelle3 Waren Name mit einfügen If ActiveSheet.Name = "Tabelle3" Then _ .Offset(Indx, 0) = ComboBox1.Value End If Indx = ComboBox2.ListIndex If Indx > -1 Then .Offset(Indx, 1).Value = TextBox1.Value .Offset(Indx, 2).Value = TextBox2.Value .Offset(Indx, 3).Value = TextBox3.Value 'In Tabelle3 Waren Name mit einfügen If ActiveSheet.Name = "Tabelle3" Then _ .Offset(Indx, 0) = ComboBox2.Value End If End With End Sub
Private Sub TextBox1_Change() If TextBox1.Value = "" Then Exit Sub If TextBox2.Value = "" Then Exit Sub Menge = TextBox1.Value Preis = TextBox2.Value Sum1 = Menge * Preis TextBox3.Value = Sum1 TextBox7.Value = Sum1 + Sum2 End Sub
Private Sub TextBox2_Change() If TextBox1.Value = "" Then Exit Sub If TextBox2.Value = "" Then Exit Sub Menge = TextBox1.Value Preis = TextBox2.Value Sum1 = Menge * Preis TextBox3.Value = Sum1 TextBox7.Value = Sum1 + Sum2 End Sub
Private Sub TextBox4_Change() If TextBox4.Value = "" Then Exit Sub If TextBox5.Value = "" Then Exit Sub Menge = TextBox4.Value Preis = TextBox5.Value Sum2 = Menge * Preis TextBox6.Value = Sum2 TextBox7.Value = Sum1 + Sum2 End Sub
Private Sub TextBox5_Change() If TextBox4.Value = "" Then Exit Sub If TextBox5.Value = "" Then Exit Sub Menge = TextBox4.Value Preis = TextBox5.Value Preis = Replace(Preis, ".", ",") Sum2 = Menge * Preis TextBox6.Value = Sum2 TextBox7.Value = Sum1 + Sum2 End Sub
Private Sub UserForm_Initialize() ComboBox1.RowSource = "Tabelle1!B10:B14" ComboBox2.RowSource = "Tabelle1!B10:B14" Sum1 = Empty: Sum2 = Empty End Sub
ich hätte nicht gedacht, dass das so umfangreich wird. Daher vielen Dank für Deine Mühe.
Meine Idee war vorher, die Werte mittels Userform in eine Excel-Tabelle zu übertragen und von dort mit Formeln zu arbeiten. Aber so sieht das sehr gut aus. Ich hätte das wahrscheinlich nie hinbekommen. Eine Sache müsste noch funktionieren: Es gibt in jeder Warengruppe verschiedene Artikel, so dass beide Zeilen z.B. mit Werten aus der Warengruppe B gefüllt werden müssen. Das scheint aber noch nicht zu funktionieren.
verstehst du unter Warengruppen die Buchstaben A, B, C, D, usw.? Im Beispiel war nur nur 1 Buchctabe zu sehen! Keine einzelnen Artikel! Wenn es in den Warengruppen verschiedene Artikel gibt, wie unterscheidest du denn die Artikel?? Es ist kein Name oder Artikel Nr. zu sehen.
Kannst du mir da bitte noch mal ein Beispiel schicken mit mehreren Fantasie Daten und einer Beschreibung was z.B. in ComboBox 1+2 drin stehen würde, und wo das konkret hinkopiert werden soll?? Im Augenblick fehlt mir da der Durchblick was du genau meinst.
mfg Gast 123
PS im Modu1 sind Const Anweisungen mit Adressen angegeben weil ich nicht wusste ab welcher Zeile z.B. in Tabelle3 kopiert werden soll. Diese Adresse/n kannst du selbst neu festlegen! Es muss nur eine gültige Zelle sein.
die ganze Tabelle ist Teil eines größeren Projektes. Einiges ist vermutlich nicht so ganz richtig rübergekommen. Die Tabelle soll mir helfen, die Werte richtig zu setzen. Das ist mir zum Teil auch gelungen. Du bist davon ausgegangen, dass die Werte in 2 Tabellen sollen. Insofern war das richtig. Die Daten sollen in eine Buchführung übernommen werden (Tabelle2) und gleichzeitig ins REchnungsformular (Tabelle3). Das Einpflegen der einzelnen Artikelbezeichnungen bekomme ich dann schon selbst hin. Das größte Problem ist, dass eine Produktgruppe in der Userform mehrfach auftaucht, z.B. bestellt ein Kunde ein Produkt der PG 1 und 3 Artikel aus dem Shop. Hier muss dann die PG (Shop) in der Buchführung so zusammengefasst werden, dass ich dort nur noch eine Gesamtsumme sehe. Keine Ahnung, wie so etwas funktioniert. Daher habe ich überlegt, die Daten in ein extra Tabellenblatt (Tabellenblatt4) zu schreiben und von dort mit entsprechenden Formeln zu filtern und zusammenzufassen.
anbei meine bisherige Arbeit, mit dem Ergebnis bin ich aber nicht ganz zufrieden. Ich habe einiges an Mkros geandert, und die Grösse der UF3 verkleinert, weil die UFs nicht auf meinen kleinen Laptop Bildschirm passen. Die Datei habe ich nur für meine Test in Tabelle2 auf 100 Zeilen verkleinert! Vorher war sie über 1,1 MB.
Neu ist das sofort mit der Rechnung auch der Verkauf in Blatt2 gebucht wird, ohne Tabelle4 zu benutzen. Dafür habe ich in der UF3 oben rechts eine TextBox für den Art Text im Verkauf mit eingefügt. Bitte selbst entscheiden wo man den besser unterbringt! Die Summen füge ich auch ein wenn man die Summen TextBox anklickt und weitergeht.
Die Rechnung wird erst gedruckt wenn der Art Text direkt mit angegeben wird. Dadurch ersparen wir uns m.E. überflüssigen Aufwand. Was mit garicht gefaellt ist das Zahlenformat bei den Preisen und Porto ohne EU Zeichen!! Das hat mich ziemlich genervt. Ich finde aber zur Zeit keine Abhilfe dafür.
@Schauan in der Spalte Einzelpreis sollte das EU Zeichen erscheinen. In der neuen Beispieldatei klappt es endlich!
Ich habe eine neue Beispieldatei mit verbessertem Makro für UserForm3 ins Forum gestellt. Würde mich freuen wenn diese Version jetzt besser klappt und Alltagstauglich ist ...
inzwischen läuft das Makro perfekt. Dafür vielen Dank. Nun habe ich ja noch eine "Einkauf"-Tabelle (Tabelle4) die ich mit einer Userform fülle. Das bekomme ich inzwischen problemlos hin. Ich hatte die Idee Gast's Makro auch für die Tabelle 4 umzuschreiben, bin jedoch kläglich gescheitert auch wenn ich einiges aus dem Makro verstanden habe. Hier wünche ich mir noch einfch fachkundige Hilfe. Die letzte angehängte Datei (Liste - T3 F.xlsm )habe ich nochmal etwas verändert, so dass die Tabelle 4 jetzt, beginnend ab Reihe 2 die Werte Datum in Spalte B, Bemerkungen in Spalte C und die Summe je nach Angabe in die entsprechende Spalten L bis O in die Tabelle 2 eingefügt werden. Dazu soll derer CommandButton 3 "Speichern" ein Makro auslösen, dass die Werte in die nächste freie Zeile der Tabelle 2 überträgt.
Ich hoffe, ich habe mich verständlich ausgedrückt und danke Euch, und besonders Gast123, schon mal für die großartige Unterstützung.
23.12.2017, 12:34 (Dieser Beitrag wurde zuletzt bearbeitet: 23.12.2017, 12:35 von Maximus.)
Hi Tanja, mal eine Anfängerfrage: beschäftige mich auch gerade mit Userform. Warum kann ich bei deinem letzten angehängten Vordruck den ersten Vordruck (Tabelle1)über den Button nicht öffnen? Gruss Markus