Velge fane ved oppstart automatisk

with Ingen kommentarer

Velge fane ved oppstart automatisk

Mange har spurt om det er mulig å få Excelboken til å starte på en bestemt arkfane ved oppstart, og det er fullt mulig. Med den lille programsnutten du kan laste ned her, kan du velge om Excelarket skal starte på fanen som heter det samme som året, måneden, ukedagen, datoen eller rett og slett navnet du angir.

Du får også en beskrivelse på hvordan du får programsnutten til å virke i din egen Excelbok.

Du trenger ikke kunne noe om programmering for å få det til – last ned regnearket og følg oppskriften i videoen.

Jump ned til slutten av artikkelen for å laste ned regnearket hvis du ikke vil ha en detaljert forklaring på de to rutinene.

(Artikkelen fortsetter under videoruten)

For deg som er interessert i hvordan det virker:

Skrive en programsnutt

Når vi lager programsnutter i VBA, er det to hovedgrupper:

Funksjoner

Dette er rutiner som returnerer en verdi, og kan benyttes som alle andre funksjoner i Excelarket. Når du skriver =NÅ() i en celle, er NÅ funksjonen.

Subrutiner

Dette er rutiner som utfører et stykke jobb, f.eks å velge oppstartfanen som i dette eksemplet. Subrutiner kan ikke brukes som en funksjon i Excel.

En del subrutiner har bestemte oppgaver i VBA.

Auto_Open startes når Excelboken starter.

Auto_Close starter når du avslutter Excelboken.

…. og det er mange andre…

I vårt tilfelle benytter vi oss av funksjonaliteten til Auto_Open, nettop fordi den starter når Excelboken starter.

Nok prat:

 

Start VBA

Står du i Excel-arket og trykker ALT+F11, kommer du inn i Visual Basic for Applications(VBA)

I utgangspunktet er det ganske tomt:

Velge fane ved oppstart automatisk

 

 

For denne oppgaven vil jeg ha et sted å legge rutinen Auto_Open, og da velger jeg Insert ->Module fra menyen:

Velge fane ved oppstart automatisk

 

Da dukker det opp en katalog som heter Modules, og en Modul som heter Module1. Module1 er bare en boks å ha programkoden vår i.

Velge fane ved oppstart automatisk

 

Klikker vi på Module1, ser du at det i bildet til høyre står (General), og at markøren står i den tomme ruten under. Der skriver vi de to rutinene.

 

 

Så skriver vi rutinen Auto_Open:

Velge fane ved oppstart automatisk

Sub Auto_Open() ‘Navnet på subrutinen

Dim MittValg As String ‘Sier fra til VBA at vi kommer til å bruke variabelen MittValg til å representere tekst

 ‘Gå til fanen ‘Alle linjer som begynner med en tilde (fnutt), er kommentarer for min egen del som VBA ignorerer

 ‘…denne ukedagen, f.eks Mandag 
 ‘MittValg = «1» ‘ Her setter jeg at Mittvalg skal være lik 1 – informasjon som gir mening for neste subrutine Velgfane()

 ‘…denne måneden 
 Mittvalg = «2» ‘Her er fnutten foran linjen fjernet, og VBA vil tildele «2» til Mittvalg

 ‘… dette året
 ‘MittValg = «3»

 ‘… denne datoen
 ‘MittValg = «4»

 ‘… fanen med dette navnet
 ‘MittValg = «MinForside»

 

Velgfane (Mittvalg) ‘ Her starter vi neste subrutine Velgfane(), som er rutinen som utfører skifte av fanen

End Sub ‘Denne linjen avsluttet Auto_Open – den settes inn automatisk når du skriver Sub Auto_Open

 

Og så skriver vi rutinen Velgfane

Velge fane ved oppstart automatisk

 

 

Mens rutinen Auto_Open har spesiell betydning for Excel, kunne vi ha kalt denne rutinen hva som helst.

 

Sub Velgfane(Mittvalg As String) ‘Navnet på rutinen og hvilken type informasjon vi skal behandle i rutinen. Mittvalg skal være en tekst.
Dim Fanenavn As String ‘Dette er variabelen som skal inneholde navnet på fanen som skal velges

On Error GoTo feil ‘Hvis noe går galt i denne rutinen, f.eks at fanen vi skal aktivere ikke finnes,  skal vi hoppe til merkelappen «feil» lenger ned.

‘Ingenting valgt
If Mittvalg = «» Then ‘ Hvis det som er sendt med ikke har noen verdi, altså ingenting omgitt av anførselstegn…
Exit Sub ‘…skal vi bare avslutte rutinen
End If ‘Dette angir at vi er ferdig med å gjøre det som skal gjøres hvis Mittvalg=»»

Select Case Mittvalg ‘ Her velger vi hva som skal gjøres ut fra verdien som Mittvalg har.

‘Ukedag
Case «1» ‘Hvis Mittvalg har verdien «1» …
Fanenavn = Format(Now(), «dddd», vbMonday) ‘… setter vi Fanenavnet til å være navnet på dagen i dag. vbMonday betyr at uken starter på mandag

‘Måned
Case «2» ‘Hvis Mittvalg har verdien «2» …
Fanenavn = Format(Now(), «mmmm») ‘… setter vi Fanenavnet til å være måneden

‘År
Case «3»  ‘Hvis Mittvalg har verdien «3» ...
Fanenavn = Format(Now(), «yyyy») ‘… setter vi Fanenavnet til å være i år , f.eks «2017»

‘Dato
Case «4»  ‘Hvis Mittvalg har verdien «4» …
Fanenavn = Format(Now(), «dd.mm.yyyy») ‘… setter vi Fanenavnet til å være dagens dato

‘Hvis ikke noe av det ovenstående forsøker
‘vi å starte fanen med innholdet i MittValg
Case Else
Fanenavn = Mittvalg ‘Her er ikke verdien noe av det vi behandler over, så da setter vi Fanenavnet lik Mittvalg. I Auto_Open kan Mittvalg være «MinForside» i tillegg til 1-4

End Select ‘ End Select markerer slutten på det som skal behandles etter Select Case

‘Aktiverer fanen
Sheets(Fanenavn).Activate ‘ Dette er kommandoen som skifter fane i Excelboken

Exit Sub ‘ Hopp ut av rutinen her (Ellers ramler vi videre inn i feilhåndteringen)

feil: ‘ Dette er merkelappen vi hopper til hvis det oppstår en feil i denne rutinen, f.eks at fanen vi forsøker å aktivere ikke finnes.
MsgBox («Finner ingen fane som heter » & Mittvalg) ‘ Dette er beskjeden som gis til brukeren hvis vi ikke finner fanen.

End Sub ‘Avslutter subrutinen VelgFane

 

 

Laste ned regnearket

Last ned regnearket her:  Velge-fane-ved-oppstart.xlsm (49 downloads)