Avatar billede friis5 Novice
18. december 2008 - 11:48 Der er 2 kommentarer og
1 løsning

Kan man gøre en formularknap inaktiv

Her er tale om en formularknap og ikke en kommandoknap.

Det jeg ønsker, er en kommando der gør formularknappen inaktiv (således den kan ses, men ikke trykkes på). Selvom man tror det, så er virker følgende kode ikke efter den hensigt.

Sub test()
Dim btn1 As Object
Dim oLeft As Double, oTop As Double, oWidth As Double, oHeight As Double
Dim rng As Range

    Set rng = ActiveSheet.Range("A2:C3")

    oLeft = rng.Left + 5
    oTop = rng.Top
    oWidth = rng.Width - 10
    oHeight = rng.Height

    Set btn1 = ActiveSheet.Buttons.Add(oLeft, oTop, oWidth, oHeight)
    btn1.Name = "Test"
 
    With btn1
        .Caption = "Sig Hej?"
        .Font.Bold = True
        .OnAction = "Hej"
        .Enabled = False
    End With
End Sub
Sub Hej()
    MsgBox "Hej med dig!"
End Sub

Det jeg ønsker, er at knappen er synlig, men "greyed-out" og ikke-klikbar (før man kører en gør-knap-klikbar-kode).
Avatar billede friis5 Novice
18. december 2008 - 11:49 #1
Altså en kode a la;

Sub KlikBar()
Dim btn As Object
   
    Set btn = ActiveSheet.Buttons("Test")
    btn.Enabled = True

End Sub

Det der Enabled virker bare ikke efter den ønskede hensigt :(
Avatar billede jkrons Professor
18. december 2008 - 13:03 #2
Jeg mener ikke at formularknapper har en egenskab, der svarer til Disabled.
Avatar billede friis5 Novice
18. december 2008 - 16:50 #3
Efter lang tids kamp satte jeg mig ned og læste på de kommandoknapper. Så ingen ko på isen, det er løst :)

Sub KommandoKnapTest()
Dim btn1 As OLEObject, btn2 As OLEObject
Dim oLeft As Double, oTop As Double, oWidth As Double, oHeight As Double
Dim rng As Range

    Set rng = ActiveSheet.Range("A1:B2")

    oLeft = rng.Left + 5
    oTop = rng.Top
    oWidth = rng.Width - 10
    oHeight = rng.Height

    Set btn1 = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False, Left:=oLeft, Top:=oTop, Width:=oWidth, Height:=oHeight)
   
    With btn1
        .Name = "Knap1"
        .Object.Caption = btn1.Name
        .Object.FontSize = 12
        .Object.FontBold = True
        .Enabled = True
        .Object.BackColor = RGB(34, 139, 34) 'grøn
    End With
   
    Set btn2 = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False, Left:=oLeft, Top:=oTop + oHeight, Width:=oWidth, Height:=oHeight)
   
    With btn2
        .Name = "Knap2"
        .Object.Caption = btn2.Name
        .Object.FontSize = 12
        .Object.FontBold = True
        .Enabled = False
        .Object.BackColor = RGB(255, 69, 0) 'rød
    End With
   
    Call TilFoejKodeTilKnapper
   
End Sub

Sub TilFoejKodeTilKnapper()
Dim Code As String

    Code = "Sub Knap1_Click()" & vbCrLf
    Code = Code & vbTab & "Call Skift(1)" & vbCrLf
    Code = Code & "End Sub" & vbCrLf & vbCrLf

    Code = Code & "Sub Knap2_Click()" & vbCrLf
    Code = Code & vbTab & "Call Skift(2)" & vbCrLf
    Code = Code & "End Sub" & vbCrLf & vbCrLf

    With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
        .insertlines .CountOfLines + 1, Code
    End With

End Sub

Sub Skift(Knap As Integer)
Dim btn1 As OLEObject, btn2 As OLEObject

    Set btn1 = ActiveSheet.OLEObjects("Knap1")
    Set btn2 = ActiveSheet.OLEObjects("Knap2")
   
    If Knap = 1 Then
        btn1.Object.BackColor = RGB(255, 69, 0)
        btn1.Enabled = False
        btn2.Object.BackColor = RGB(34, 139, 34)
        btn2.Enabled = True
    ElseIf Knap = 2 Then
        btn1.Object.BackColor = RGB(34, 139, 34)
        btn1.Enabled = True
        btn2.Object.BackColor = RGB(255, 69, 0)
        btn2.Enabled = False
    End If

End Sub

Til andre der vil lege med det, så opretter ovenstående kode to knapper (inkl. deres underliggende kode). 1 grøn aktiv, og en rød inaktiv. Klikkes der på den aktive knap efter oprettelse skifter egenskaberne.
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