(31.07.2014, 21:37)michel34497 schrieb: Bei weiteren test ist mir etwas aufgefallen. Wenn Ich den Namen in der Combox2 auswähle schreibt er auch die beträge in die ListBox, bis dahin alles Ok. Wähle ich einen neuen Namen in Cb2 an bleiben die alten beträge stehen und die neuen werden hinzugefügt.
Das hatte ich ja in einer meiner Beiträge weiter oben schon geschrieben. Versuche mal als Notbehelf folgendes: Wähle auch in der ComboBox1 einen anderen Namen aus, danach wieder den passenden und dann den passenden für ComboBox2. Zum anderen Problem, teste mal
Code:
Private Sub prcListboxEinlesen(lngLetzte As Long, cboAuswahlbox As ComboBox) Dim lngC As Long Dim rngBereich As Range 'diese Variable neu eingefügt Dim dblSumme As Double Static lngA As Long 'aus einer mit Dim angelegten Variablen eine statische gemacht
'wenn es sich bei der Übergabe um die ComboBox1 handelt, setze Variable auf 0 If cboAuswahlbox = Me.ComboBox1 Then lngA = 0 For lngC = 5 To lngLetzte If Worksheets("Übersicht").Cells(lngC, cboAuswahlbox.ListIndex * 2 + 3) < 0 Then Me.ListBox1.AddItem Worksheets("Übersicht").Cells(lngC, 1).Value Me.ListBox1.Column(1, lngA) = Format(Worksheets("Übersicht").Cells(lngC, cboAuswahlbox.ListIndex * 2 + 3).Value, "#,##0.00 €") dblSumme = dblSumme + Me.ListBox1.Column(1, lngA) Me.ListBox1.Column(2, lngA) = lngC ' dblSumm = dblSumm + Cells(lngc, ComboBox1.ListIndex * 2 + 3) lngA = lngA + 1 End If Next lngC 'neuer Bereich Set rngBereich = Worksheets("Startblatt").Columns(2).Find(cboAuswahlbox.Value, LookIn:=xlValues, lookat:=xlWhole) If Not rngBereich Is Nothing Then Me.ListBox1.AddItem Worksheets("Startblatt").Range("AI2").Value Me.ListBox1.Column(1, lngA) = Format(rngBereich.Offset(0, 30).Value, "#,##0.00 €") dblSumme = dblSumme + Me.ListBox1.Column(1, lngA) lngA = lngA + 1 'neu eingefügt, damit der Zähler korrekt funktioniert End If TextBox1.Value = Format(dblSumme, "#,##0.00 €") End Sub
Gruß Stefan Win 10 / Office 2016
Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28 • michel34497
Hallo Stefan! Hab das grade mal eingebaut. Ist nicht ganz so wie ich das gedacht habe aber kann damit ersteinmal leben. Danke nochmals. Hast du für die andere frage die ich gestellt habe, vieleicht auch eine vorschlag? was mir aufgefallen ist in meiner UF das es vieleicht keine TextBox sein dürft sondern ein Label. In der TextBox kann man ja werte ändern, was aber nicht sein darf. Meine frage ist, was ist am sinnvollsten den Betrag anzuzeigen und wie könnte der Code lauten?
Danke Danke Danke
Man hab eben beim Testen gar nicht gesehen das du schon alles mit eingebaut hast!!!!!!!! Teste jetzt erstmal genauer!
es wird nicht richtig berechnet, wenn Du beide ComboBoxen benützt. Habe dies nun geändert.
Code:
Private Sub prcListboxEinlesen(lngLetzte As Long, cboAuswahlbox As ComboBox) Dim lngC As Long Dim rngBereich As Range 'diese Variable neu eingefügt Static dblSumme As Double Static lngA As Long 'aus einer mit Dim angelegten Variablen eine statische gemacht
'wenn es sich bei der Übergabe um die ComboBox1 handelt, setze Variable auf 0 If cboAuswahlbox = Me.ComboBox1 Then lngA = 0: dblSumme = 0 For lngC = 5 To lngLetzte If Worksheets("Übersicht").Cells(lngC, cboAuswahlbox.ListIndex * 2 + 3) < 0 Then Me.ListBox1.AddItem Worksheets("Übersicht").Cells(lngC, 1).Value Me.ListBox1.Column(1, lngA) = Format(Worksheets("Übersicht").Cells(lngC, cboAuswahlbox.ListIndex * 2 + 3).Value, "#,##0.00 €") dblSumme = dblSumme + Me.ListBox1.Column(1, lngA) Me.ListBox1.Column(2, lngA) = lngC ' dblSumm = dblSumm + Cells(lngc, ComboBox1.ListIndex * 2 + 3) lngA = lngA + 1 End If Next lngC 'neuer Bereich Set rngBereich = Worksheets("Startblatt").Columns(2).Find(cboAuswahlbox.Value, LookIn:=xlValues, lookat:=xlWhole) If Not rngBereich Is Nothing Then Me.ListBox1.AddItem Worksheets("Startblatt").Range("AI2").Value Me.ListBox1.Column(1, lngA) = Format(rngBereich.Offset(0, 30).Value, "#,##0.00 €") dblSumme = dblSumme + Me.ListBox1.Column(1, lngA) lngA = lngA + 1 'neu eingefügt, damit der Zähler korrekt funktioniert End If TextBox1.Value = Format(dblSumme, "#,##0.00 €") End Sub
Zu der Textbox: Stelle die Enable-Eigenschaft der Textbox auf False, dann kannst Du in der Textbox nichts mehr ändern.
Hallo Stefan! Danke für die Hilfe! Ich weiß Nicht warum aber so wie das geschrieben hast läuft der Code Nicht bei mir. Bekomme Laufzeitfehlerf. Habe dies auch in der andern Datei getestet, immer dasselbe
Code:
Private Sub ComboBox2_Change() Dim loLetzte As Long Dim dblwert As Double, dblSumm As Double If Me.ComboBox2.ListIndex > -1 Then loLetzte = Cells(Rows.Count, 1).End(xlUp).Row End If
'Me.ListBox1.Clear 'die ausgewählte ComboBox wird mit übertragen Call prcListboxEinlesen(loLetzte, Me.ComboBox2) ' neu eingefügt um ListBox zu aktivieren End Sub
Hallo Stefan! Ich habe es gefunden! Hatte mir nochmals eine Arbeitskopie von der Datei erstellt, dabei ist irgendetwas schief gelaufen. Habe den Code dann in Orginal eingefügt und er funktioniert!
Hallo Leute! Brauch eure Hilfe mal wieder! Über die UF1 Bezahlen bekomme ich einen Fehler wenn die ListBox wieder eingelesen soll "Argument ist nicht optional" Wie bekomm ich das weg? Das nächste ist: wenn ein Pärchen ausgewählt ist bucht der Code nur bei einer Person. Was und wie muss ich ändern?
(09.08.2014, 22:37)michel34497 schrieb: Über die UF1 Bezahlen bekomme ich einen Fehler wenn die ListBox wieder eingelesen soll "Argument ist nicht optional" Wie bekomm ich das weg?
Ist klar, das da der Fehler kommt. Dein Aufruf einer Prozedur im Command-Button-Ereignis
Code:
Private Sub CommandButton1_Click() 'Variablendekleration und Code entfernt, da hier ohne Belang Call prcListboxEinlesen End Sub
Und das Makro dazu (nur die erste Zeile)
Code:
Private Sub prcListboxEinlesen(lngLetzte As Long, cboAuswahlbox As ComboBox)
Beide Parameter sind hier erforderlich.
Zu deinem anderen Problem: Das ist nicht so einfach, denn die Beträge kommen aus zwei verschiedenen Spalten und dazu müsste die Listbox erweitert werden. Bisher hat die Listbox 3 Spalten, 2 die Du siehst und 1 die nicht angezeigt wird. Jetzt muss beim Einlesen auch die Spalte mit eingetragen werden. Leider krankt der bisherige Code auch schon daran, das in der dritten Spalte nicht alles befüllt wird und zwar hier
Code:
If Not rngBereich Is Nothing Then Me.ListBox1.AddItem Worksheets("Startblatt").Range("AI2").Value Me.ListBox1.Column(1, lngA) = Format(rngBereich.Offset(0, 30).Value, "#,##0.00 €") dblSumme = dblSumme + Me.ListBox1.Column(1, lngA) lngA = lngA + 1 'neu eingefügt, damit der Zähler korrekt funktioniert End If
Siehst Du hier eine Codezeile, wo die Zeile eingetragen wird? Und was ist mit der ComboBox? Welche soll genommen werden? Und wie sollen die einzelnen Beträge mit dem Einzahlungsbetrag verrechnet werden? Wenn ich mal hier Gaby und Ebi hernehme, die ein Pärchen bilden und 25 Euronen einzahlen.
(11.08.2014, 18:52)michel34497 schrieb: Was mach ich FALSCH oder wo ist der Fehler ???????????????????
Die Prozedur prcListboxEinlesen wird aus mindestens zwei Makros heraus aufgerufen. ComboBox1_Change und ComboBox2_Change. Lautet da der Aufruf auch so, wie Du ihn gepostet hast?
Und einfach einen aus den Codes rauskopieren geht auch nicht, denn sonst hätte ich ihn schon gepostet. Das Ganze muss umgebaut werden, aber ich warte mal auf deinen Antwort bezüglich der Fehlbeträge.