Excel VBA textbox sumifs
2022-02-18T13:35:28+01:00
2022-02-18T15:39:58+01:00
2022-08-12T07:30:46+02:00
amatore
Sziasztok,

Szeretnék kis segítséget kérni, mert elakadtam.
Van egy userform, amin egy combboox és egy textbox. A combobox-ban az érték kiválasztása után kellene a textbox-ba a sumifs függvény segítségével egy adott dátumig összegezni az értékeket. És ez az összegzés valami miatt nem működik, legalábbis, ha a dátumot argumentumot is beleteszem a függvénybe. Amígy csak a combobox-ban választott értékeket összegzem a sumifs függvénnyel, addig jó érték jelenik meg a textbox-ban. ActiveSheet.Range("H11").Value lenne az adott dátum, ameddig kellene az értékeket összegeznie.
Ha esetleg bárkinek van valami ötlete, hogy hol rontom el, szívesen fogadnám, mert már hosszú ideje szenvedek ezzel.
Nagyon köszönöm előre is.
A kódom:


Private Sub ComboBox1_Change()
    
    Dim i As Long
    Dim IsArrow As Boolean
    If Not IsArrow Then
        With Me.ComboBox1
            .List = ActiveWorkbook.Sheets("Termék").Range("C35", ActiveWorkbook.Sheets("Termék").Cells(Rows.Count, "C").End(xlUp)).Value
            .ListRows = Application.WorksheetFunction.Min(8, .ListCount)
            .DropDown
            If Len(.Text) Then
                For i = .ListCount - 1 To 0 Step -1
                    If InStr(1, .List(i), .Text, vbTextCompare) = 0 Then .RemoveItem i
                Next
                .DropDown
            End If
        End With
    End If
    
    Dim ws As Worksheet
        Set ws = ActiveWorkbook.Sheets("Készletmozgás")
    Dim tbl As ListObject
    Set tbl = ActiveWorkbook.Sheets("Termék").ListObjects("tbl_Termek")
    Dim s As String
    Dim r As Variant
    s = Me.ComboBox1.Value
    r = Application.WorksheetFunction.Index(tbl.DataBodyRange, WorksheetFunction.Match(s, tbl.ListColumns(2).DataBodyRange, 0), 1)
    Me.TextBox4.Value = Application.WorksheetFunction.SumIfs(ws.Range("I:I"), ws.Range("G:G"), r, ws.Range("D:D"), "<=" & ActiveSheet.Range("H11").Value)
    Me.TextBox4.Value = Format(TextBox4, "# ##0 db")
 
End Sub


Üdv,
Mutasd a teljes hozzászólást!
Szia!
A dátum igen különlegesen viselkedik az Excelben, a VBA-ban pedig méginkább.
Makróban az angol függvényneveket és formákat kell használni.
Két lehetőséged van:
1. A dátumokat a D oszlopban és a H11 cellában is általános vagy szám formátumúra váltod (cellaformázás - általános vagy szám) (makróban Numberformat  "General"), így tudja értelmezni a feltételt.
2. A feltétel megadásánál "megtrükközöd" az angol (mm/dd/yyyy) formátumot:

"<=" & Mid(Range("H11").Text,6,2) & "/" & Right(Range("H11").Text,2) & "/" & Left(Range("H11").Text,4))
Itt abból indultam ki, hogy a cellában ez látszik: 2021.11.23  - a Text ezt adja vissza.
Ha nálad másként néz ki a megjelenés, akkor a szövegfüggvények paramétereit annak megfelelően módosítsd, hogy az angol forma jöjjön ki "belőle".

Üdv.
Mutasd a teljes hozzászólást!

  •  Me.TextBox4.Value = Application.WorksheetFunction.SumIfs(ws.Range("I:I"), ws.Range("G:G"), r, ws.Range("D:D"), "<=" & ActiveSheet.Range("H11").Value)

    Szia!

    Ugye ebben a sorban van a hiba?

    Tegyél be egy sort tesztelés miatt eléje.
    Itt irasd ki egy ablakba az ActiveSheet.Range("H11").Value értékét.

    Vagyis arra vagyok kíváncsi hogy biztos hogy az aktív munkalap az a lap amire hívatkozni szeretnél?
    Mutasd a teljes hozzászólást!
  • Szia!
    A dátum igen különlegesen viselkedik az Excelben, a VBA-ban pedig méginkább.
    Makróban az angol függvényneveket és formákat kell használni.
    Két lehetőséged van:
    1. A dátumokat a D oszlopban és a H11 cellában is általános vagy szám formátumúra váltod (cellaformázás - általános vagy szám) (makróban Numberformat  "General"), így tudja értelmezni a feltételt.
    2. A feltétel megadásánál "megtrükközöd" az angol (mm/dd/yyyy) formátumot:

    "<=" & Mid(Range("H11").Text,6,2) & "/" & Right(Range("H11").Text,2) & "/" & Left(Range("H11").Text,4))
    Itt abból indultam ki, hogy a cellában ez látszik: 2021.11.23  - a Text ezt adja vissza.
    Ha nálad másként néz ki a megjelenés, akkor a szövegfüggvények paramétereit annak megfelelően módosítsd, hogy az angol forma jöjjön ki "belőle".

    Üdv.
    Mutasd a teljes hozzászólást!
  • Szia,

    Igen, ezzel a sorral van a probléma.
    De akkor megpróbálom, amit javasolsz.
    Köszönöm
    Mutasd a teljes hozzászólást!
  • Szia,
    Valóban a formázással volt a gond, nagyon köszönöm.
    Üdv.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd