Avatar billede joch Nybegynder
26. marts 2008 - 18:40 Der er 11 kommentarer og
1 løsning

Nummer på Ark

Hej

Jeg er interesseret i at udtrække numret på et Ark i en celle.
Hvordan gør man det - som f.eks.?

Function myArkNum()

    myArkNum = Sheets(this).Number

End Function
Avatar billede mugs Novice
26. marts 2008 - 18:43 #1
Avatar billede jeppson Nybegynder
26. marts 2008 - 18:45 #2
Function myArkNum(Ark as String)
    myArkNum = Sheets(Ark).Index
End Function
Avatar billede joch Nybegynder
26. marts 2008 - 19:19 #3
Hej jeppson

Tak for dit svar - skulle man så kunne trække den i cellen via =myArkNum()
Det giver nemlig fejl...

også tak til mugs ;)
Avatar billede jeppson Nybegynder
26. marts 2008 - 20:13 #4
Beklager det ikke var forklaret -her er lige nogle forskellige funktioner til hvert tilfælde :-)

Function myArkNumString(Ark As String) As Integer
' Giv nummeret ud fra arknavn
    myArkNumString = Sheets(Ark).Index
End Function

Function myArkNumActiveSheet() As Integer
' Giv nummeret på det aktive ark
    myArkNumActiveSheet = Application.ActiveSheet.Index

End Function

Function Arknavn(IndexNumber As Integer) As String
' Giv navnet på det aktive ark
    Arknavn = Sheets(IndexNumber).Name
End Function

Function ArknavnActiveSheet() As String
' Giv navnet på det arket med indexnummeret
    ArknavnActiveSheet = Application.ActiveSheet.Name
End Function


I Ark1 som er det 1. ark i et regneark giver de resultaterne:
                          Ark1
=myArkNumString("Ark1")      1
=myArkNumActiveSheet()    1
=arknavn(2)              Ark2
=ArknavnActiveSheet      Ark1
Avatar billede joch Nybegynder
26. marts 2008 - 20:31 #5
Hej jeppson

Det virker - men... :)
Jeg har f.eks. 3 Ark.
I Ark1 B1 har jeg tallet 10:
I Ark2 B1 har jeg =SUM(Ark1!B1;myArkNumActiveSheet())

Når jeg ændre 10-20 i Ark1 bliver B1 i Ark2 til 21 - Fordi Ark1 er aktivt når jeg ændre. Hvis jeg efterfølgende går ind i B1 i Ark2 kan jeg få den til at opdatere korrekt. det betyder at jeg skal ind i alle felter og så kunne jeg lige så godt selv skrive tallet ;)

Findes der ikke en funktion der bare hedder Sheet.Index, så den selv opdatere alle (måske 50) B1 felter?

Er det til at forstå hvad jeg mener?
Avatar billede jeppson Nybegynder
26. marts 2008 - 20:39 #6
Det har du da ret i - det havde jeg overset!

Så kan du da bare bruge denne :-)

Function Arknummer()
    Arknummer = Sheets(Cells.Parent.Name).Index
End Function
Avatar billede joch Nybegynder
26. marts 2008 - 20:51 #7
Jeg beklager - men det giver samme resultat :(
Avatar billede jeppson Nybegynder
26. marts 2008 - 21:35 #8
Så skulle den være der!

Function Arknummer()
    Arknummer = Sheets(Application.Caller.Parent.Name).Index
End Function


Fik hjælp fra:
http://support.microsoft.com/kb/213475

Har dog fjernet Application.Volatile, da den bevirkede at formlem skulle genberegnes hvis der blev skiftet væk fra regnearket!

Håber denne kan bruges!
Avatar billede joch Nybegynder
26. marts 2008 - 23:19 #9
Det er helt perfekt :) :) Takker mange gange!
Hvis du smider et svar, så er der glade point herfra :)
Avatar billede jeppson Nybegynder
26. marts 2008 - 23:25 #10
Nice :-)
Avatar billede joch Nybegynder
27. marts 2008 - 08:45 #11
Lav det lige som svar, så jeg kan give point ;)
Avatar billede jeppson Nybegynder
27. marts 2008 - 09:11 #12
Nice
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
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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