• 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.

=SOMPRODUCT (niet ingevulde rijen niet meenemen)

Status
Niet open voor verdere reacties.

Daan01

Gebruiker
Lid geworden
16 jul 2020
Berichten
37
Hallo,

Ik ben bezig om voor onze (steeds veranderende) voorraadlijst een 'totale voorraad' overzicht te maken. Hierin wordt alle informatie van de andere tabbladen in één x overzichtelijk getoond in totalen.

Nu loop ik tegen het volgende aan.. Het document zal straks beveiligd worden met code (bijlage = beveiligd zonder code). Om een rij in te voeren heb ik een button gemaakt waar een macro aanhangt. Deze voert een rij in die geheel voldoet aan de opmaak en waarin gelijk alle formules in meegenomen zijn. Nu komt er in de ingevoegde rij #N/B te staan in kolommen waar voor het antwoord een formule gebruikt wordt (zie tabblad verbruik en tabblad inkoop). De kolom waar 3N/B in komt te staan is echter ook de rij waaruit gegevens geladen worden voor tabblad Totale Voorraad. Hier komt echter overal #N/B te staan door deze ingevoegde rij. Mocht een gebruiker dus een rij in voegen, welke later niet nodig bleek te zijn (en dus leeg blijft staan).. dan zie ik in mijn totaal blad alleen maar #N/B staan ipv de uitkomst van de wél ingevoerde rijen.. Heel jammer en kan ook alleen ik veranderen door de rijen (na ontgrendelen) te verwijderen.

Ik vroeg mij dus af of er een mogelijkheid is om bij die =SOMPRODUCT op de 1e pagina de lege cellen (waar dus #N/B) komt te staan, niet mee te nemen. Ik heb al het een en ander opgezocht en geprobeerd (waaronder het gebruik maken van =SOMPRODUCT......*(inkoop!M9:M11>=0,00001) maar dit lijkt niet het juiste antwoord te zijn.

Heeft iemand enig idee wat ik zou kunnen aanpassen in de formule om wel tot het gewenste resultaat te komen?

Ik hoor het heel graag.
 

Bijlagen

Voor het invoegen van een rij op een vaste plek in een tabel is dit voldoende
Code:
ListObjects(1).ListRows.Add (2)

De opmaak en formules gaan dan automatisch mee.
 
Kort en eenvoudig. Maar wat me opvalt...jouw code neemt WEL de VO mee, maar niet de in de cel eigenschappen gedefinieerde opmaak...Is dit wel mogelijk?
Ik deed e.e.a. op deze (veel ingewikkelder) manier...

Code:
    Rows("5:5").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("A5:E5").Select
    With Selection.Font
        .Name = "Calibri"
        .FontStyle = "Vet"
        .Size = 14
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .ThemeFont = xlThemeFontNone
    End With
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlDot
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlDot
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("B5:C5").Select
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Range("D5").Select
    Selection.NumberFormat = "m/d/yyyy"
    Range("E5").Select
    Selection.NumberFormat = "$ #,##0.00"
    Range("H23").Select

Waarschijnlijk is hiervan het grootste deel overbodig...
 
mvdvlist,
Waar reageer je nu op?

Als het ontwerp klaar is dan stel je eenmalig in de kolommen de gewenste opmaak in. In de meeste gevallen blijft het dan goed staan en heb je geen VBA nog om het elke keer opnieuw in te stellen.

Nb. Elke select in jouw code is overbodig net als een heleboel andere regels. (maar dat had je zelf ook al door)
 
Bedankt voor de reacties.. De reacties lijken alleen vooral te gaan over het invoegen van een nieuwe rij en de opmaak die daarbij hetzelfde blijft. Dit is echter totaal niet mijn probleem..

Ik heb een button voor rij invoegen omdat het document geblokkeerd is (zodat werknemers niet zomaar gegevens kunnen veranderen).. Mocht ik dit niet doen, kunnen ze geen nieuwe rij invoegen. De button met de code werkt gewoon prima en geeft geen problemen.

Het probleem waar ik tegenaan loop is de SOMPRODUCT die ik op mijn 1e tabblad gebruik. De SOMPRODUCT laadt alle cijfers uit een tabblad passend bij de voorwaarden die ik heb gesteld. Deze werkt ook prima.. Totdat een medewerker een nieuwe rij invoegt maar deze niet direct invult. Op dit moment komt er #N/B te staan in de kolom van de rij die geladen wordt naar het 1e tabblad. Hierdoor krijg ik in het 1e tabblad overal #N/B. Dit is dus niet de bedoeling. Waar ik naar zoek is dus een manier (voorwaarden in mijn somproduct?) waardoor hij de rij waar niks ingevuld staat (in dit geval waar dus #N/B staat) niet meeneemt in de formule en het antwoord gewoon op een getal uitkomt.

Het lijkt erop dat van bovenstaande antwoorden alleen het antwoord van jkpieterse hierop gericht is. Ik heb nog niet direct een idee wat ik hier mee kan dus hulp is welkom, maar ik zal dit ook zelf even gaan uitproberen.

Nogmaals.. bedankt voor de tijd en de reacties..
 
Waarschijnlijk moet je dan het antwoord in #2 nog eens goed bestuderen. Met het invoegen van een nieuwe rij krijg je diverse fouten in de formules. Als je in de rest van het document wil rekenen dan zal je eerst deze fouten op een correcte manier moeten afhandelen. Formules evalueren is hier een handig hulpmiddel voor.

De onzin van het beveiligen doe je pas als alles werkt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan