ERLANDSEN DATA CONSULTING Excel & VBA Tips   Information in English / Informasjon på engelsk

Disse websidene oppdateres ikke lengre og er kun tilgjengelig for historikken sin skyld.

Klikk her for å gå til den oppdaterte informasjonen.

Egendefinerte menyer i Excel5/95

Dersom du ønsker det kan du lage din egendefinerte meny ved hjelp av makroer. Det er også mulig å benytte Menyredigering i Excel5/Excel95, men denne muligheten bortfaller i Excel97. Så da kan det kanskje være like greit å lære seg den metoden som virker på alle versjonene? Eksempelet nedenfor viser hvordan du oppretter og sletter egendefinerte menyer i Excel5/95. Metoden kan også benyttes i Excel97, men dersom regnearket bare skal benyttes i Excel97 eller nyere bør du ta en titt på Excel97-eksempelet i stedet.

Const MinMenyNavn As String = "&TestMeny"


Sub OpprettMenyer()
' oppretter egendefinerte menyer på flere menylinjer
' kan eventuelt utføres automatisk fra en Auto_Open-prosedyre
    LagMenyen 3, MinMenyNavn 
    ' oppretter meny på menylinjen for ingen åpne dokumenter
    LagMenyen 7, MinMenyNavn
    ' oppretter meny på menylinjen for regneark
End Sub


Sub FjernAlleMenyene()
' fjerner den egendefinerte menyen MinMenyNavn fra de valgte menylinjene
' kan eventuelt utføres automatisk fra en Auto_Close-makro
    FjernMenyen 3, MinMenyNavn ' menylinjen for ingen åpne dokumenter
    FjernMenyen 7, MinMenyNavn ' menylinjen for regneark
End Sub


Sub LagMenyen(mLinje As Variant, mNavn As String)
' oppretter den egendefinerte menyen mNavn på menylinjen mLinje
Dim mm As Menu, i As Integer
    FjernMenyen mLinje, mNavn ' fjerner menyen dersom den finnes fra før
    Set mm = Application.MenuBars(mLinje).Menus.Add(mNavn) 
    ' oppretter menyen mNavn på menylinjen mLinje
    With mm.MenuItems
        .Add "&Menyvalg 1", "Eksempel1"
        .Add "Meny&valg 2", "Eksempel2"
        .Add "Menyvalg &3", "Eksempel3"
        .Add "-" ' legger til en skillelinje i menyen
        .Add "Fjern menyen", "FjernAlleMenyene"
    End With
    Set mm = Nothing
End Sub


Sub FjernMenyen(mLinje As Variant, mNavn As String)
' fjerner alle forekomstene av menyen mNavn på menylinjen mLinje
Dim ml As MenuBar, m As Menu, tNavn As String
    mNavn = RenTekst(mNavn, 2) 
    ' fjerner eventuelle spesialtegn fra menynavnet, returnerer store bokstaver
    Set ml = Application.MenuBars(mLinje)
    For Each m In ml.Menus
        tNavn = RenTekst(m.Caption, 2)
        If mNavn = tNavn Then m.Delete
    Next m
    Set ml = Nothing
End Sub


Function RenTekst(tString As String, tAlt As Integer) As String
' fjerner spesialtegn fra en menytekst og returnerer store eller småbokstaver
' tAlt=0:opprinnelig format
' tAlt=1:små bokstaver
' tAlt=2:STORE BOKSTAVER
' tAlt=3:Stor Forbokstav
Dim tmpString As String, i As Integer, t As Boolean
    RenTekst = ""
    For i = 1 To Len(tString)
        t = True
        If Mid(tString, i, 1) = "&" Then t = False
        If t Then RenTekst = RenTekst & Mid(tString, i, 1)
    Next i
    Select Case tAlt
        Case 1: RenTekst = LCase(RenTekst)
        Case 2: RenTekst = UCase(RenTekst)
        Case 3: RenTekst = Application.Proper(RenTekst)
    End Select
End Function

 

Dokumentet er sist oppdatert 2000-02-05 22:10:37      Utskriftsvennlig versjon

 

Erlandsen Data Consulting     http://www.erlandsendata.no/   
Excel & VBA Tips   Copyright ©1999-2017    Ole P. Erlandsen   All rights reserved
E-post kontaktadresse