Styra knappstatus
I detta tips demonstreras tekniker för att markera om en knapp är aktiverad eller inte. Det kan komma väl till användning i situationer där det krävs en visuell kommunikation mellan XL och användarna.
Tipsen har sin utgångspunkt i att växla mellan att visa stödlinjer eller inte i det aktiva arbetsbladet.
I det första tipset visas hur vi styr statusen för en knapp som har en knappbild.
Option Explicit
Sub Skapa_Vaxel_Knapp()
'© 2002 Alla rättigheter XL-Dennis
Dim cbABmeny As CommandBar
Dim ccEgenMeny As CommandBarControl
Dim iHjalp As Integer
Set cbABmeny = Application.CommandBars(1)
'Här säkerhetsställer vi att inget menyalternativ med namnet existerar.
On Error Resume Next
cbABmeny.Controls("Stödlinjer").Delete
On Error GoTo 0
'Här identifieras hjälpmenyns indextal
iHjalp = cbABmeny.Controls("Hjälp").Index
'Vi skapar menyalternativet och placerar menyn före Hjälp.
Set ccEgenMeny = _
cbABmeny.Controls.Add(Type:=msoControlButton, _
Before:=iHjalp)
Här byggs knappen upp.
With ccEgenMeny
.Style = msoButtonIconAndCaption
.Caption = "Stödlinjer"
.FaceId = 343
.OnAction = "TaBort_LaggTill_Stodlinjer"
End With
End Sub
Sub TaBort_LaggTill_Stodlinjer()
'© 2002 Alla rättigheter XL-Dennis
Dim cbKnapp As CommandBarButton
Set cbKnapp = Application.CommandBars(1).Controls("Stödlinjer")
'Här växlas status på knappläget.
cbKnapp.State = Not cbKnapp.State
'Här växlas om stödlinjer ska visas eller inte.
ActiveWindow.DisplayGridlines = Not ActiveWindow.DisplayGridlines
End Sub
I nästa tips visas hur vi sätter en bock framför menyalternativet samt hur vi avbockar alternativet.
Detta fungerar endast på knappar utan bild.
Sub Skapa_Bock_Knapp()
'© 2002 Alla rättigheter XL-Dennis
Dim cbABmeny As CommandBar
Dim ccEgenMeny As CommandBarControl
Dim iHjalp As Integer
Set cbABmeny = Application.CommandBars(1)
On Error Resume Next
cbABmeny.Controls("Stödlinjer1").Delete
On Error GoTo 0
iHjalp = cbABmeny.Controls("Hjälp").Index
Set ccEgenMeny = _
cbABmeny.Controls.Add(Type:=msoControlPopup, _
Before:=iHjalp)
'Här byggs menyn upp.
With ccEgenMeny
.Caption = "Stödlinjer1"
With .Controls.Add(Type:=msoControlButton)
.Caption = "Växla"
.OnAction = "TaBort_LaggTill_Stodlinjer1"
End With
End With
End Sub
Sub TaBort_LaggTill_Stodlinjer1()
'© 2002 Alla rättigheter XL-Dennis
Dim cbKnapp As CommandBarButton
Set cbKnapp = Application.CommandBars(1).Controls("Stödlinjer1").Controls("Växla")
'Bockar för/av knappen och ändrar på status för stödlinjer.
If ActiveWindow.DisplayGridlines = False Then
cbKnapp.State = msoButtonDown
ActiveWindow.DisplayGridlines = True
Else
cbKnapp.State = msoButtonUp
ActiveWindow.DisplayGridlines = False
End If
End Sub