22. marts 2017 - 11:12Der er
21 kommentarer og 1 løsning
Excel VBA giver #NAVN retur i aktuelle celler
Hej Eksperter. Jeg har følgende kode indsat i VBA:
Range("bp22").FormulaR1C1 = "=IF(SUM(RC[-7]:RC[-1])=0,"""",ColoredCells(RC[-7]:RC[-1],L_Tal_1)&"" + ""&+ColoredCells(RC[-7]:RC[-1],L_Tillæg1))" Range("bp22").AutoFill Destination:=Range("bp22:bp24"), Type:=xlFillDefault Application.Calculation = xlCalculationAutomatic Range("bp22:bp24").Value = Range("bp22:bp24").Value Range("a1").Activate End Sub
Retunere #NAVN i celler bp22 til bp24. (L_Tal_1 er start celle der indeholder tal (L_Tal_1 til L_Tal_7 er dem jeg har tal i ) L_Tillæg1 er alene bp22 (til bp24) er resultat cellen, bh22 til bn24 indeholder de tal jeg checker)
Ja det er jo sjovt at når man efter dagevis ikke kan se "skoven for bare træer" så skal man bare skrive et opslag her og så kan man se fejlen :D Løste det med at flytte [-7] og [-1] til de rigtige så virkede farverne....
Nu er det "bare" det tal den skal vise i bp22:bp24 der mangler i stedet for #NAVN
Function ColoredCells(rRange As Range, rColor As Range) As Double Dim rCell As Range Dim lCount As Long, lRefColor As Long Application.Volatile lCount = 0 lRefColor = rColor.Interior.ColorIndex For Each rCell In rRange If rCell.Interior.ColorIndex = lRefColor Then lCount = lCount + 1 Next rCell ColoredCells = lCount End Function
Jeg har fået cellerne BH22:BN24 til at skifte farve udfra om de er identisk med tal i cellerne "L_Tal_1" til "L_Tal_7" og "L_Tillæg1" (BH2 til BN2 og BP2)
I celle BP 22 til BP24 ville jeg gerne have "udregningen/visningen" feks. 6 + 1 Hvis L_Tal_1-L_Tal_7 rammer 6 og L_Tillæg1 rammer 1
Jeg har lavet en knap/macro der checker og farver cellerne BH22:BN24 ved at hente koden (Private Sub Find_resultat() hvor koden i første indslag er en del af) det virker fint, men count delen der skal vises i BP22:BP24 viser #NAVN i stedet for feks 6 + 1.
Håber det hjælper på forståelsen, jeg er novice inden for området men lærer hurtigt ;)
Det der undre mig er at cellerne (BH22:BN22) bliver farvet (i 2 forskellige) Så Celle navnet L_Tal_x burde ikke være problemet og der hvor "summen" (Feks 6 + 1) skal vises (BP22:BP24) har jeg ikke ændret celle navn. Tænker det er en funktion men er lidt lost her :(
Function ColoredCells(rRange As Range, rColor As Range) As Double Dim rCell As Range Dim lCount As Long, lRefColor As Long Application.Volatile lCount = 0 lRefColor = rColor.Interior.ColorIndex For Each rCell In rRange If rCell.Interior.ColorIndex = lRefColor Then lCount = lCount + 1 Next rCell ColoredCells = lCount End Function
Hvis jeg skriver i BP22 denne: =HVIS(SUM(BH22:BN22)=0;"";VBAProject.Koden3.ColoredCells(BH22:BN22;BH2)&" + "&+VBAProject.Koden3.ColoredCells(BH22:BN22;BP2)) ---------------------------------------------------------------------- koden 3 er det modul jeg bruger ___________________________________________ så virker det perfekt, 0 + 0 ved ingen farver og 1 + 0 ved 1 farve.
Kan selvfølgelig fjerne koden i vba så virker det men ville helst have koden derinde :)
Det var første del i ark1 som jeg ville have til at virke og derefter lave de andre når jeg havde fået den til at virke. det er nemmere at arbejde med 1 del af gangen spec. når de er ens ;)
Jeg tror Kabbak mener at Formlen ser "Function ColoredCells......" i et andet åbent regneark.
Kan du sende arket på E-mail ?
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.