Avatar billede contici Nybegynder
17. april 2013 - 13:07 Der er 10 kommentarer

VBA: Indlæsning af værdi fra et Named Range

Hej,

Jeg er ved at blive sindsyg over noget:

Jeg har lavet et named range, ved navn antal_mapninger_tpf, dette tæller antal ikke-tomme i et range: =TÆLV(Lister!$I$6:$I$103)

Resultatet af denne tælling giver fx 17.

Dette vil jeg gerne indlæse i VBA, altså jeg vil gerne indlæse værdien 17 i VBA. Men hvordan?

Har prøvet:
n=thisworkbook.range("antal_mapninger_tpf").value (n bliver lig "=COUNTA(Lister!$I$6:$I$103)")

Har prøvet:
n = Range("Antal_mapninger_TPF").Value (virker slet ikke)

Der må da være en løsning?
Avatar billede store-morten Ekspert
17. april 2013 - 16:01 #1
Måske:
n = Worksheets("Lister").Range("I6:I103").Cells.SpecialCells(xlCellTypeConstants).Count
Avatar billede store-morten Ekspert
17. april 2013 - 16:04 #2
Eller måske:
n = Range("antal_mapninger_tpf").Value
Avatar billede contici Nybegynder
17. april 2013 - 16:27 #3
Hej Store-Morten,

Dit første forslag har jeg ikke forsøgt, men vil bruge det navnet antal_mapninger_tpf.

Nr 2 forslag virker ikke.
Avatar billede store-morten Ekspert
17. april 2013 - 16:33 #4
"antal_mapninger_tpf" er det ikke en navn-givet celle med formlen: =TÆLV(Lister!$I$6:$I$103) ?
Avatar billede kabbak Professor
17. april 2013 - 19:04 #5
Dim N As long
N = val(Range("antal_mapninger_tpf"))
Avatar billede contici Nybegynder
18. april 2013 - 08:47 #6
@Store-Morten: Nej. antal_mapninger_tpf er et navngivent navn som har formlen =TÆLV(Lister!$I$6:$I$103). Det er ikke en celle med førnævnte formel som jeg så har refereret til med antal_mapninger_tpf.

@kabbak: Virker desværre ikke. Den siger "Runtime error 1004: Method 'Range' of object 'Global' failes.
Avatar billede store-morten Ekspert
18. april 2013 - 08:59 #7
Det forstår jeg ikke.
har du prøvet #1
Avatar billede natkatten Mester
18. april 2013 - 11:32 #8
#1 virker, idet det navngivne område defineres i VBA-koden. Spørgsmålet er, hvordan en dynamisk værdi i en navngivning foretaget igennem Excel's navnestyring hentes? Jeg har ikke et bud herpå, men det udelukker bestemt ikke, at det kan lade sig gøre!
Avatar billede natkatten Mester
18. april 2013 - 11:36 #9
Denne virker også, men er heller ikke løsningen på spørgsmålet:

Dim n As Long
n = Application.WorksheetFunction.CountA(Sheets("Lister").Range("$I$6:$I$103"))
Avatar billede store-morten Ekspert
18. april 2013 - 16:01 #10
Forslag:
Brug navngivet område og VBA beregning.

Navn: "antal_mapninger_tpf"
Refererer til: =Lister!$I$6:$I$103

Og:
n = Worksheets("Lister").Range("antal_mapninger_tpf").Cells.SpecialCells(xlCellTypeConstants).Count

Eller:
n = Application.WorksheetFunction.CountA(Sheets("Lister").Range("antal_mapninger_tpf"))
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