• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Optellen van waarden uit gefilterde listbox en weergeven in textbox (of label)

Status
Niet open voor verdere reacties.

Andre175

Gebruiker
Lid geworden
2 feb 2018
Berichten
351
Goedenavond

Voor mijn rit-administratie wil ik graag het totaal gewicht en laadmeters per rit kunnen zien.

dmv 3 comboboxen kan ik keuzes maken

CB1 = keuze klant
CB2 = keuze Rit
CB3 = keuze Zending

Wanneer klant en rit zijn geselecteerd wil ik graag dat het gewicht en laadmeters wordt weergegeven in een textbox.
de gegevens moeten uit een listbox gehaald worden zodra de rit geselecteerd is.

Wie o wie kan mij een zet in de goede richting geven hoe ik de gefilterde waarden optel en weergeef in een textbox.


Bekijk bijlage Optellen_Listbox.xlsb
 
Zet een subtotaal regel onderaan je tabel en filter de tabel gelijk mee.
De waarden van je subtotaal zijn denk ik nu wel op te halen naar je textbox.
 
gegevens listbox zijn totaal overbodig inderdaad
 
mmmmm....oke.

Daar was ik nog niet op gekomen.
Door het zoeken naar een oplossing op dit forum was ik op een heel ander spoor gekomen.

Het volgende voorbeeld had ik gevonden.

Bekijk bijlage Helpmij.xls

Ik was dus op een hele andere mannier aant denken.
 
Zet totaalrij onderaan je tabel.
Code:
Private Sub CB2_Change()
    CB3.Value = ""
    If CB2.ListIndex > -1 Then CB3.List = F_lijst(2)
    If CB3.ListCount = 1 Then CB3.ListIndex = 0
with Sheets("form3").ListObjects(1).TotalsRowRange
       s00 = .Columns(5)
       h00 = .Columns(6)
end with
    With ListBox1
       .List = [tabel].Value
          For i = .ListCount - 1 To 0 Step -1
                If .List(i, 1) <> CB1 Or .List(i, 2) <> CB2 Then
                   s00 = s00 - .List(i, 4)
                   h00 = h00 - .List(i, 5)
                   .RemoveItem (i)
                End If
            Next
        TextBox1 = s00
      TextBox2 = h00
 End With
End Sub
 
Laatst bewerkt:
Ik heb het ondertussen werkend gekregen in mijn rit-administratie bestand.
Nog een paar kleine aanpassingen, wat vormgeving en gebruiksgemak betreft, maar dat gaat wel lukken.

Ik merkte dat ik nu wel tegen een ander probleem aanloop.

in de tabel had ik het gewicht en laadmeters als getal staan.
Echter wanneer ik in de userform het gewicht of laadmeters aanpas en deze waarden opsla in de tabel, dan wordt het als tekst weggeschreven...:mad:
Volgens mij had ik dat probleem al eens eerder gehad, moet maar eens gaan puzzelen hoe dat op te lossen.

Morgen is er weer een dag.
Weltrusten
 
F1 → type conversiefuncties.
 
Het probleem van een getal wegschrijven als tekst, terwijl opmaak van de kolom "getal" is, is ook opgelost.
Code:
    If TB1.value = WorksheetFunction.Max([ID]) + 1 Then
        With Sheets("invoer")
            iRow = .Cells.Find(what:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1
                ws.Cells(iRow, 1).Resize(, 23).value = Array(TB1.value, CB1.value, ("'" & CB2.value), ("'" & CB3.value), CB4.value, _
                TB6.value, TB7.value, TB8.value, TB9.value, TB10.value, TB11.value, [COLOR="#FF0000"]CDbl[/COLOR](TB12.value), [COLOR="#FF0000"]CDbl[/COLOR](TB13.value), TB14.value, _
                TB15.value, TB16.value, TB17.value, TB18.value, TB19.value, TB20.value, TB21.value, TB22.value, TB23.value)
        End With
End If


Ik heb de oplossing hier gevonden.

iedereen weer bedankt voor de medewerking.

Goed Weekend
 
Ja, die stond al onder F1 → type conversiefuncties.
 
Toch nog weer een ander probleem(pje).....

Omdat er nu een totaalrij onder aan de tabel staat, gaat het fout bij het wegschrijven van nieuwe data.
Deze komt nu onder de totaalrij te staan.
is eigenlijk ook wel logisch gezien de code.
Code:
If TB1.value = WorksheetFunction.Max([ID]) + 1 Then
        With Sheets("invoer")
            iRow = .Cells.Find(what:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1
                ws.Cells(iRow, 1).Resize(, 23).value = Array(TB1.value, CB1.value, ("'" & CB2.value), ("'" & CB3.value), CB4.value, _
                TB6.value, TB7.value, TB8.value, TB9.value, TB10.value, TB11.value, CDbl(TB12.value), CDbl(TB13.value), TB14.value, _
                TB15.value, TB16.value, TB17.value, TB18.value, TB19.value, TB20.value, TB21.value, TB22.value, TB23.value)
        End With
End If

is er een (speciale) optie/functie om de totaalrij te omzeilen?
 
Code:
[COLOR=#3E3E3E]If TB1.value = application.Max([ID]) + 1 Then [/COLOR]sheets("invoer").listobjects(1).listrows.add.range.resize(, 23) =Array(TB1.value, CB1.value, ("'" & CB2.value), ("'" & CB3.value), CB4.value, _                TB6.value, TB7.value, TB8.value, TB9.value, TB10.value, TB11.value, CDbl(TB12.value), CDbl(TB13.value), TB14.value, _
                TB15.value, TB16.value, TB17.value, TB18.value, TB19.value, TB20.value, TB21.value, TB22.value, TB23.value)
 
Als er dus met een een tabel gewerkt wordt, is het beter om deze code te gebruiken ipv te zoeken naar de eerste lege regel.

Bedankt, ik kan weer verder.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan