(31.07.2014, 20: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, 21: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, 17: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.