Avatar billede Sonic Mester
22. marts 2017 - 11:12 Der 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)

er der en der kan "knække" den :)
Avatar billede Sonic Mester
22. marts 2017 - 13:24 #1
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
Avatar billede kabbak Professor
22. marts 2017 - 14:28 #2
Du kan bruge .FormulaLocal, i stedet for .FormulaR1C1, det gør det måske nemmere at  bruge.

Range("K1").FormulaLocal = "=hvis(sum(A1:J1)=0;"""";sum(A1:j1))"


#1

forstår ikke lige
Nu er det "bare" det tal den skal vise i bp22:bp24 der mangler i stedet for #NAVN

hvad er galt.
Avatar billede store-morten Ekspert
22. marts 2017 - 15:29 #3
Din "Function ColoredCells......" skal ligge i et Modul (Ikke på arket)
Avatar billede Sonic Mester
22. marts 2017 - 15:30 #4
Forsøger senere med .FormulaLocal i stedet for :)

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 ;)
Avatar billede Sonic Mester
22. marts 2017 - 15:37 #5
store-morten:

De (Find_resultat og ColoredCells) ligger i et modul (Kaldt koden)
Avatar billede store-morten Ekspert
22. marts 2017 - 15:47 #6
Og du har to celler der er døbt om til: L_Tal_1  og  L_Tillæg1
Avatar billede store-morten Ekspert
22. marts 2017 - 15:57 #7
Hvis du bruger .FormulaLocal, i stedet for, virker det kun i en dansk version af Excel
Avatar billede Sonic Mester
22. marts 2017 - 16:01 #8
Celle hedder som neden for:
BH2 = L_Tal_1
BI2 = L_Tal_2
BJ2 = L_Tal_3
BK2 = L_Tal_4
BL2 = L_Tal_5
BM2 = L_Tal_6
BN2 = L_Tal_7
BP2 = L_Tillæg1
Avatar billede store-morten Ekspert
22. marts 2017 - 16:02 #9
Vises #NAVN er der nogen Excel ikke kan se/finde.
F.eks. en Function eller navn givet celler.
Avatar billede Sonic Mester
22. marts 2017 - 16:11 #10
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 :(
Avatar billede store-morten Ekspert
22. marts 2017 - 16:41 #11
Prøv denne, der ikke bruger navn givet celler:
Sub test()
    Range("bp22").Formula = "=IF(SUM(BI22:BO22)=0,"""",ColoredCells(BI22:BO22,$BH$2)&"" + ""&+ColoredCells(BI22:BO22,$BP$2))"
    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
Avatar billede Sonic Mester
22. marts 2017 - 17:00 #12
Virker som den anden/gamle (Farver de rigtige numre) men
stadigvæk #NAVN i celler BP22:BP24
Avatar billede store-morten Ekspert
22. marts 2017 - 17:19 #13
Den har ingen indvirkning på at farver de rigtige numre ;-)

Den indsætter formlen:

=HVIS(SUM(BI22:BO22)=0;"";ColoredCells(BI22:BO22;$BH$2)&" + "&+ColoredCells(BI22:BO22;$BP$2))

I celle BP22

Hvis jeg fjerne "Function ColoredCells......" får jeg: #Navn
Avatar billede store-morten Ekspert
22. marts 2017 - 17:27 #14
Prøv at indsætte denne i et nyt Modul:
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
Avatar billede store-morten Ekspert
22. marts 2017 - 17:31 #15
Når jeg tester i et ark uden farver, får jeg: 7+7
Avatar billede Sonic Mester
22. marts 2017 - 17:38 #16
Har slettet den i det gamle modul og oprettet et nyt modul hvor
den kode er indsat.

Samme resultat
Avatar billede Sonic Mester
22. marts 2017 - 18:09 #17
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 :)
Avatar billede store-morten Ekspert
22. marts 2017 - 18:28 #18
Har send en pb
Avatar billede Sonic Mester
22. marts 2017 - 18:28 #19
Sådan nu virker det..... har tilføjet VBAProject.Koden3.ColoredCells
som jeg troede den godt vidste eftersom koden er skrevet i modulet "koden3" :

Range("bp22").FormulaR1C1 = "=IF(SUM(RC[-8]:RC[-2])=0,"""",VBAProject.Koden3.ColoredCells(RC[-8]:RC[-2],L_Tal_1)&"" + ""&+VBAProject.Koden3.ColoredCells(RC[-8]:RC[-2],L_Tillæg1))"
    Range("bp22").AutoFill Destination:=Range("bp22:bp24"), Type:=xlFillDefault
    Application.Calculation = xlCalculationAutomatic
    Range("bp22:bp24").Value = Range("bp22:bp24").Value

Stadigvæk udfra den fine hjælp fra Morten, takker.
Avatar billede kabbak Professor
22. marts 2017 - 18:46 #20
Har du så ikke funktionen, i andre moduler/ indlæste mapper ??
Avatar billede Sonic Mester
22. marts 2017 - 19:05 #21
Kabbak.

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 ;)
Avatar billede store-morten Ekspert
22. marts 2017 - 19:13 #22
Jeg tror Kabbak mener at Formlen ser "Function ColoredCells......" i et andet åbent regneark.

Kan du sende arket på E-mail ?
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester