12. september 2019 - 12:14Der er
17 kommentarer og 1 løsning
SumBold fejler
Hej Jeg har ca. 4000 rækker hvor jeg skal lægge en masse tal sammen, ca. 100. Hvis jeg bruger SumBold får jeg et resultat, hvis jeg bruger A1+A12+A23+A34+A45.... også fremdeles ca. 100 gange, så når jeg et lidt andet resultat, det rigtige, for jeg har et kontrol ark. Det er ligegyldigt om jeg lægger tallene sammen med eller uden kommatal, når jeg bruger SumBold, resultatet bliver det samme og kun et helt tal. Nogen der har et bud på, hvad der er galt med SumBold?
hvis det er denne Function SumBold(WorkRng As Range) 'Update 20131202 Dim Rng As Range Dim xSum As Long For Each Rng In WorkRng If Rng.Font.Bold Then xSum = xSum + Rng.Value End If Next SumBold = xSum End Function
prøv at rette til denne.
Function SumBold(WorkRng As Range) as variant 'Update 20131202 Dim Rng As Range Dim xSum As variant For Each Rng In WorkRng If Rng.Font.Bold Then xSum = xSum + Rng.Value End If Next SumBold = xSum End Function
Du kan måske tjekke, om der er en "fejl" i formatet i en eller flere af cellerne, således at funktionen ikke får fat i de samme, som når du lægger sammen.
Det simple er, hvis differencen er lig med værdien i én celle.
Hmmm det har nogle gange hos mig været variabeltypen der har generet mig!!
Tænker måden du laver fed skrift på er det betinget formatering (bare en tanke) og om det kan have indvirkning!!
prøv i vba
Function SumBold(WorkRng As Range) as variant 'Update 20131202 Dim Rng As Range Dim xSum As variant For Each Rng In WorkRng If Rng.Font.Bold Then xSum = xSum + Rng.Value Debug.print Rng.Address &" : "& Rng.Value &" Sum:" & Xsum End If Next SumBold = xSum End Function
for at vise debug.print tryk Ctrl+G
på denne måde kan du se hvilke celler den griber hvad de indeholder og udviklingen af xSum
Function TaelFed(ran As Range) As Double cou = 0 For Each c In ran.Cells If c.Font.Bold = True Then cou = cou + 1 End If Next c TaelFed = cou End Function
Function SumBold(WorkRng As Range) as variant 'Update 20131202 Dim Rng As Range Dim xSum As variant For Each Rng In WorkRng If Rng.Font.Bold Then xSum = xSum + (Rng.Value*1) End If Next SumBold = xSum End Function
Måske opfatter excel dine tal som tekst derfor Rng.value*1
Function SumFontCol(cel, ran As Range) As Double Application.Volatile colo = cel.Font.Color colsum = 0 For Each c In ran.Cells If c.Font.Color = colo Then colsum = colsum + c.Value End If Next c SumFontCol = colsum End Function
Function SumFed(ran As Range) As Double Application.Volatile cou = 0 For Each c In ran.Cells If c.Font.Bold = True Then cou = cou + c.Value End If Next c SumFed = cou End Function
Undskyld store-morten men udover Application.Volatile hvad er så forskellen på:
Function SumBold(WorkRng As Range) 'Update 20131202 Dim Rng As Range Dim xSum As Long For Each Rng In WorkRng If Rng.Font.Bold Then xSum = xSum + Rng.Value End If Next SumBold = xSum End Function
og
Function SumFed(ran As Range) As Double Application.Volatile cou = 0 For Each c In ran.Cells If c.Font.Bold = True Then cou = cou + c.Value End If Next c SumFed = cou End Function
Mange tak store-morten det virker perfekt, lige hvad jeg ønskede mig.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.