• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

wijzigen activeX commandbutton in macro

Status
Niet open voor verdere reacties.

NJL

Gebruiker
Lid geworden
14 aug 2023
Berichten
11
Hallo,
Ik heb een activeX knop in een werkblad gezet en kan hiervan in de ontwerpmodus de parameters handmatig instellen.
Nu wil ik met een macro een aantal parameters wijzigen.
De volgende code wordt foutloos geaccepteerd door de compiler alleen werkt 't niet goed.
Ik heb voor het gemak per regel aangegeven wat er goed of fout gaat.

Ik heb met de macrorecorder een poging gedaan maar die geeft alleen een code zoals:
ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
, DisplayAsIcon:=False, Left:=275.25, Top:=29.25, Width:=159.75, _
Height:=60.75).Select
zonder opgave van de parameters welke ik in de ontwerpmodus handmatig aangepast heb.

Vraag 1) Heeft iemand een idee waarom de eerste drie regels wél en de laatste drie niet of niet goed uitgevoerd wordt?
Vraag 2) Waarom neemt de macrorecorder de parameterwijzigingen niet op?

Met dank

Sub CommandButton1_Click()
ActiveSheet.CommandButton1.BackColor = RGB(255, 0, 0) ''achtergrondkleur instellen werkt hier goed.
With CommandButton1.Font
.Bold = False ''false resp true werkt wel
.Size = 16 '' werkt
''.BackColor = RGB(255, 0, 0) ''werkt hier niet geeft fout 438
.Name = "calibri" ''werkt wel ook met andere lettertypen
.Italic = False ''bij eerste run true daarna geeft false of true altijd false
.Strikethrough = False ''bij eerste run true daarna geeft false of true altijd false
.Underline = False ''bij eerste run true daarna geeft false of true altijd false
End With

End Sub
 
plaats eens een voorbeeldbestand en zet je code tussen codetags met #
 
Allereerst welkom bij HelpMij! Je krijgt héél snel (het juiste) antwoord als je aan twee regels voldoet: 1) stuur een voorbeeld bestandje mee en 2) Plaats codes tussen CODE tags. Dat laatste is het makkelijkst, want je hebt een knop # in je werkbalk waarmee je die tags rondom een selectie kan zetten. Voor het eerste moet je op de knop <Ga geavanceerd> drukken, en dan op de Bijlage knop. Dan kunnen we wat handiger meedenken.
 
Heren, dank voor jullie supersnelle reactie. Ik wil graag een voorbeeld .xlsm plaatsen alleen zie ik zo gauw niet hoe dat moet.
 
Aha, gevonden.
code
Sub CommandButton1_Click()
ActiveSheet.CommandButton1.BackColor = RGB(255, 0, 0) ''achtergrondkleur instellen werkt hier goed.
With CommandButton1.Font
.Bold = False ''false resp true werkt wel
.Size = 16 '' werkt
''.BackColor = RGB(255, 0, 0) ''werkt hier niet geeft fout 438
.Name = "calibri" ''werkt wel ook met andere lettertypen
.Italic = False ''bij eerste run true daarna geeft false of true altijd false
.Strikethrough = False ''bij eerste run true daarna geeft false of true altijd false
.Underline = False ''bij eerste run true daarna geeft false of true altijd false
End With

End Sub
/code
 
dus niet, je moet de code selecteren en dan op het #-icoontje klikken.

En een bestand plaatsen heeft Octafish al uitgelegd.
 
alle begin is moeilijk, nu het bestand nog

Code:
Sub CommandButton1_Click()
ActiveSheet.CommandButton1.BackColor = RGB(255, 0, 0)
With CommandButton1.Font
    .Bold = False ''werkt
    .Size = 16
    .BackColor = RGB(255, 0, 0) ''werkt niet
    .Name = "calibri"
    .Italic = False
    .Strikethrough = False
    .Underline = False
End With
 
Onderin staan 3 knoppen; de middelste heet <Ga geavanceerd>. Die klik je dus aan. Daarna krijg je een antwoordvak met een uitgebreide knoppenbalk met daarin een knop met een paperclip. Dat is het wereldwijd gebruikte symbool voor bijlagen, dus die heb je vast al eens eerder gezien/gebruikt, bijvoorbeeld in een email bericht. Die klik je aan. De rest wijst zich redelijk vanzelf, al is het niet het meest gebruiksvriendelijke systeem om een bijlage toe te voegen :).
 
Als 't goed is is 't nu gelukt.
 

Bijlagen

  • edit_knop.xlsm
    17,4 KB · Weergaven: 16
Oeps, heren ik stuur dit vanaf deze machine met windows10 en excel2007 en daarop blijkt 't nu perfekt te werken.
Op de andere machine met met windows11 en office2016 treedt het probleem wél op.
Ik ga op zoek of ik daar iets kan vinden. Misschien hebben jullie ook zo'n configuratie.
 
Probeer het eens zo:
Code:
Sub CommandButton1_Click()
    With CommandButton1
        .FontBold = True
        .FontSize = 16
        .BackColor = RGB(25, 255, 0)
        .FontName = "courier"
        .FontItalic = False
        .Font.Strikethrough = False 'Werkt niet
        .FontUnderline = False
    End With
End Sub

.Font.Strikethrough doet niets en FontStrikethrough bestaat niet.

Windows 11 en Excel 2021
 
Ik mis een aantal puntjes.

@NJL,
probeer dit eens om te zien wat er gebeurt.
Code:
Sub CommandButton1_Click()

With CommandButton1
    .BackColor = vbYellow
    .Caption = "TEST"
    With .Font
        .Bold = True
        .Size = 10
        .Name = "calibri"
        .Italic = True
        .Strikethrough = True
        .Underline = True
    End With
End With

MsgBox "kijk wat gebeurt"

With CommandButton1
    .BackColor = vbGreen
    .Caption = "KLAAR"
    With .Font
        .Bold = False
        .Size =20
        .Name = "algerian"
        .Italic = False
        .Strikethrough = False
        .Underline = False
    End With
End With


End Sub
 
Laatst bewerkt:
Hier heb je geen VBA voor nodig; dit stel je gewoon in in de ontwerpmodus en daarna blijf je ervan af.
 
Normaal gesproken is dat de beste methode.
Was maar een voorbeeldje.:D
 
Als er iets zichtbaar moet wijzigen hebben altijd nog een wisselknop (ToggleButton)
 
Allen dank voor jullie meedenken. Onderstaande code doet 't in beide versies
De code van AD1957 ga ik nog eens evalueren.
@snb: Dank maar voor de hoeveelheid knoppen in het project is dat handmatig toch teveel gevraagd.
 

Bijlagen

  • edit_knop.xlsm
    19,8 KB · Weergaven: 16
@AD1957: jouw code werkt wél op X2007. Echter het tweede deel werkt niet op X2016. Na de eerste run blijft 'striketrough' altijd true.
 
dan:

- heb je teveel knoppen
- weet je niet dat je elk specifiek opgemaakt element in een Userform kunt kopiëren en plakken.
 
#17
zelf heb ik office2016 en het werkt nog steeds.

Wat denk je dat de code in het bestand van post16 doet.
Kijk eens goed en lees stap voor stap.
Code:
 With CommandButton1.Font
        .Strikethrough = True
        .Strikethrough = False
  End With
Na de run altijd False.
Voor het tweede deel hetzelfde.
 
Laatst bewerkt:
@Ad1957
Ik neem aan dat die code bedoeld is om met F8 doorheen te lopen en dan zie je duidelijk wat er gebeurt.:)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan