Avatar billede mr.handstand Novice
18. juli 2006 - 15:19 Der er 9 kommentarer og
1 løsning

Burde jeg ikke kunne sætte caption på en knap med vba?

Hejsa,

Burde denne kode ikke virke?

While Len(Range("ButtonLabelHeading").Offset(j, 0).Value) > 1
    'iterate through all buttons
   
   
    For i = 1 To ActiveWorkbook.Worksheets.Count
        Set objWS = Worksheets(i)
        For Each objOLE In objWS.OLEObjects
            Debug.Print objOLE.Name
            If objOLE.Name = Range("ButtonLabelHeading").Offset(j, 0).Value Then
                If NewLanguage = "ToEnglish" Then Set bjOLE.Caption = Range("ButtonLabelHeading").Offset(j, 2).Value
                If NewLanguage = "ToDanish" Then Set bjOLE.Caption = Range("ButtonLabelHeading").Offset(j, 1).Value
            End If
        Next
    Next
    j = j + 1
Wend


Jeg ved godt at den ikke er efficient med alle traverseringerne, men den burde da ændre knappens caption?

Jeg får fejlen: Object required

Jeg ønsker at traversere et range med navne på alle mine knapper og ændre caption til hhv dansk og engelsk som står i kolonnerne til højre fra range't.


Muchos problemos - si si :o)

Håber at der er en kvik hjerne derude der kan hjælpe mig her i varmen.

Søren
Avatar billede pidgeot Nybegynder
18. juli 2006 - 15:24 #1
Mangler du ikke et O i det navn? Den hedder ObjOLE, ikke bjOLE :)
Avatar billede mr.handstand Novice
18. juli 2006 - 15:32 #2
Massiv fejl 40, men også med O virker skidtet ikke - jeg tror at o'et er forsvundet i et af mine talrige forsøg på at skrive koden om... :o)

Så stadig - inkl. o i objOLE - hvorfor virker skidtet ikke?
Avatar billede mr.handstand Novice
18. juli 2006 - 15:33 #3
fejlen er forresten selvfølgelig ikke den jeg startede med at skrive, da det jo var et manglende objekt - men istedet den "egentlige" fejl:

"Object doesn't support this property or method"

Men det burde det da - for jeg kan se eksempler i hjælpemenuen, hvor man skriver caption i vba'en.
Avatar billede bak Forsker
18. juli 2006 - 15:36 #4
hvad er det for nogle knapper ?
Er de fra Forms eller fra kontrolelementer ?
Avatar billede pidgeot Nybegynder
18. juli 2006 - 15:37 #5
Nu ved jeg ikke noget om VBA, så det er muligt jeg tager lidt fejl her - men det du har fat i her, er vel et OLEObject, som ikke umiddelbart har de egenskaber som en Button har. Derfor skal du nok typecaste dit objekt til en Button (eller hvad den type nu hedder).

Som sagt, kender intet til sproget, så kan ske det hverken er nødvendigt eller muligt - men det er mit umiddelbare indskud :)
Avatar billede bak Forsker
18. juli 2006 - 15:49 #6
Hvis knapperne er fra Formularmenuen (forms) så skulle dette kunne gøre det

Dim obj As Object

    While Len(Range("ButtonLabelHeading").Offset(j, 0).Value) > 1
        'iterate through all buttons

        For i = 1 To ActiveWorkbook.Worksheets.Count
            Set objWS = Worksheets(i)
            For Each obj In objWS.Buttons
                Debug.Print obj.Name
                If obj.Name = Range("ButtonLabelHeading").Offset(j, 0).Value Then
                    If NewLanguage = "ToEnglish" Then obj.Caption = Range("ButtonLabelHeading").Offset(j, 2).Value
                    If NewLanguage = "ToDanish" Then obj.Caption = Range("ButtonLabelHeading").Offset(j, 1).Value
                End If
            Next
        Next
        j = j + 1
    Wend
Avatar billede mr.handstand Novice
18. juli 2006 - 16:19 #7
Knapperne af fra control toolbox  - så det er kontrolelementer.
Jeg prøvede din kode bak, og den flyver ikke - hvad er modifikationen ift kontrolelementer (hvis muligt)?
Avatar billede bak Forsker
18. juli 2006 - 17:03 #8
For knapper fra controlbox

While Len(Range("ButtonLabelHeading").Offset(j, 0).Value) > 1
    'iterate through all buttons
   
   
    For i = 1 To ActiveWorkbook.Worksheets.Count
        Set objWS = Worksheets(i)
        For Each objOLE In objWS.OLEObjects
            Debug.Print objOLE.Name
            If objOLE.Name = Range("ButtonLabelHeading").Offset(j, 0).Value Then
                If NewLanguage = "ToEnglish" Then objOLE.Object.Caption = Range("ButtonLabelHeading").Offset(j, 2).Value
                If NewLanguage = "ToDanish" Then objOLE.Object.Caption = Range("ButtonLabelHeading").Offset(j, 1).Value
            End If
        Next
    Next
    j = j + 1
Wend
Avatar billede mr.handstand Novice
18. juli 2006 - 18:10 #9
Perfekt - rigtig mange tak bak - lægger du venligst et svar så pointene kan flytte ejermand.
Avatar billede bak Forsker
18. juli 2006 - 20:14 #10
ok :-)
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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