Bestemme et regneark Number
July 29 by Eliza
Lawrence trenger en måte å bestemme antall et regneark selv om regnearket har fått nytt navn. For eksempel, hvis et regneark er oppkalt Sheet11 er det lett nok å finne ut at det er ark 11. Hvis han omdøper arket til januar, trenger Lawrence fortsatt en vei å vite dette er ark 11.
Løsningen på dette problemet gjøres best med en brukerdefinert funksjon (en makro). Det er i realiteten to tall at makroen kan returnere for hvert regneark. Den første er indeksnummeret for regnearket. Dette tallet representerer indeks av regnearket er Regneark objekt innenfor regneark samlingen. Denne verdien kan returneres av en makro som ligner på følgende:
Funksjon SheetNumber1 (shtname As String)
Dim SHT Som regneark
Application.Volatile
For Hver SHT I ThisWorkbook.Worksheets
Hvis LCase (sht.Name) = LCase (shtname) Deretter
SheetNumber1 = sht.Index
Exit Function
End If
Neste
SheetNumber1 = -1
End Function
Denne funksjonen, når det brukes i et regneark, returnerer indeksen nummeret til regneark hvis navn sendes til funksjonen. Hvis navnet som sendes til funksjonen ikke eksisterer i den regneark samling, deretter en verdi på -1 returneres av funksjonen. For eksempel er det følgende brukes i en celle vil returnere indeksverdi for regnearket kalt "januar" i samlingen:
= SheetNumber ("Januar")
Problemet med denne tilnærmingen er at rekkefølgen av regneark objekter i regneark samlingen kan endre seg over tid. Dermed kan du ikke alltid anta at den ellevte ark i samlingen er arket som var opprinnelig Sheet11.
En mer konsistent måte å finne ut det opprinnelige navnet på et regneark (uavhengig av hvordan den er omdøpt) er å bruke det Visual Basic refererer til som arket "Kodenavn". Dette er en egenskap av skjemaet og kan bestemmes på følgende måte:
Funksjon SheetNumber2 (shtname As String)
Dim SHT Som regneark
Dim STEMP As String
Application.Volatile
For Hver SHT I ThisWorkbook.Worksheets
Hvis LCase (sht.Name) = LCase (shtname) Deretter
STEMP = sht.CodeName
SheetNumber2 = Val (Mid (Stemp, 6, 4))
Exit Function
End If
Neste
SheetNumber2 = -1
End Function
Kodenavnet Eiendommen er skrivebeskyttet i en makro. Det er tildelt på den tiden at regnearket er opprettet, men det er mulig for den å være manuelt endret i løpet av Visual Basic-redigering. Kodenavnet er alltid en streng, som representerer den aller første navnet som ble brukt til regnearket, så det vil være noe sånt som "Sheet11". Når kodenavnet er satt, selv om regnearket er omdøpt (for eksempel til "January"), vil den forbli stabil ("Sheet11").
I makro eksempel (SheetNumber2) kodenavnet eiendommen er tilordnet STEMP variabel. Dette vil, mesteparten av tiden, være noe sånt som "Sheet3" eller "Sheet11". Ja, så griper makro den numeriske verdien av hva begynner med den sjette tegnet (rett etter "skjema"). Dette er verdien som returneres av funksjonen.
ExcelTips er din kilde for kostnadseffektiv Microsoft Excel trening. Dette tipset (3398) gjelder for Microsoft Excel 97, 2000, 2002, og 2003. Du kan finne en versjon av dette tipset for Båndet av Excel (Excel 2007 og senere) her: Bestemme et regneark nummer.
- • Betinget Utskrift
- • Bestemme Kompleksiteten i et regneark
- • Bestemme sorteringskriterier
- • Ser samme cellene på ulike regneark
- • Bestemme et navn for en uke Antall
- • Automatisk Bestemme en Due Date
- • Bestemme Mouse Cursor koordinater på en grafisk
- • Opprette regneark med en Macro
- • Bestemme kombinasjoner for å gjøre en Total