• 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.

Aanpassen (Name) CommandButton

Status
Niet open voor verdere reacties.

Symphysodon

Gebruiker
Lid geworden
14 dec 2012
Berichten
468
Beste forummers,

Hoe kan ik de naam (Name) van een CommandButton aanpassen.

Ik dacht zo:
Code:
    ActiveSheet.Shapes("CommandButton2").Select
    Set Shp = ActiveSheet.Shapes(Selection.Name)
   
    With Shp.OLEFormat.Object
        .Object.Caption = "PRINTEN"
        .Name = "printen"
    End With
maar dat werkt niet. De naam van de knop wordt wel aangepast in PRINTEN maar de (Name) blijft onveranderd in: CommandButton2.

mvg
Marco
 
Het opschrift wordt zo aangepast, niet de naam van het object.
Ik kan me zo ook geen reden voorstellen waarom je dat zou willen.
 
@snb
Die site is het eerste waar ik zoek wanneer ik een vba-probleem heb.;)
Als ik
Code:
Sheets("Blad1").OLEObjects("knop_vervolg").Name = "knop_einde"
toepas krijg ik een foutmelding 1004: Eigenschap van OLEObjects van klasse Worksheet kan niet worden opgehaald.
@edmoor
Het is een onderdeel van een rekenblad. Op dat rekenblad staat een knop: Opslaan en Printen, verder helemaal geen Excelfunctionaliteit. Nadat je de knop gebruikt hebt worden alle cellen beveiligd en is het de bedoeling dat je alleen het blad nog uit kan printen. De code voor het printen die ik gebruik heet: printen. Dus daarom dacht ik als ik de naam van het object verander en de tekst van de knop dan is het aangepast.
 
In de ontwerpmodus kun je het natuurlijk altijd met de hand doen. Dat lijkt me ook beter dan via VBA-code.

Staat de knop wel in werkblad 'Blad1' ?
Heet de knop wel 'knop_vervolg' ?

Dit werkt hier:
Code:
Sub M_snb()
   Sheet1.OLEObjects(1).Name = "snb_003"
End Sub
 
Laatst bewerkt:
Niks met de hand. De gebruiker mag alleen de getallen invullen en de gemaakte knoppen gebruiken.
Als ik on error resume next gebruik dan wordt de naam wel aangepast maar de tekst op de knop niet
Code:
    On Error Resume Next
    'Aanpassen opslaanknop in printknop
    Sheets("Rapportage").OLEObjects("CommandButton2").Name = "printen"
    Sheets("Rapportage").OLEObjects("CommandButton2").Caption = "PRINTEN"
 
Er is toch geen enkele reden de codename van een ActiveX-control te wijzigen ?

En de knoptekst wijzig je met:
Code:
Sheets("Rapportage").OLEObjects("CommandButton2").Object.Caption = "PRINTEN"
 
Laatst bewerkt:
De verwijzing naar de code is toch de naam van de knop idg private Sub CommandButton2_Click()
Die verwijzing is voor het opslaan en printen van het bestand. Dus ik dacht als ik alleen de naam aanpas dan hoef ik geen extra code te maken.
Code:
Private Sub CommandButton2_Click()
    opslaan_printen
End Sub

Private Sub printen_Click()
    printen_werkblad
End Sub
 
Ik moet je teleurstellen: zo werkt een gebeurtenis _Click niet.
 
Wat gek ik gebruik dit altijd op deze manier. Als ik een ActiveX opdrachtknop toevoeg en klik op Programma toevoegen krijg je:
Code:
Private Sub CommandButton1_Click()

End Sub
Daartussen zet ik dan de programmanaam, i.d.g. printen_werkblad

Waarom het niet werkt weet ik niet maar heb het nu op een andere manier opgelost
Code:
.Shapes("printen").Visible = False
Ik heb er een knop bijgemaakt en die tijdens het openen van het bestand verborgen wordt en pas weer tevoorschijn komt als het bestand opgeslagen wordt. Op dat moment wordt de opslaan-knop verwijderd.
 
Misschien heb ik toch een ander soort knop?? Ik heb jou code nogmaals getest in een 'schoon' bestand met een oude knop (blauw) en een nieuwe ingevoegde knop. Bij de nieuwe werkt jou code bij de blauwe knop werkt jou code niet en als ik het goed heb zijn het wel alle twee ActiveX-besturingselementen.
 

Bijlagen

  • Aanpassen Active-X.xlsm
    20,2 KB · Weergaven: 35
Beide knoppen doen het prima.
 
De knoppen doen het wel maar de aanpassing van de knop werkt niet. Het waarom begrijp ik niet maar weet nu wel wanneer de foutmelding optreed:
Als ik een verse knop maak met bijvoorbeeld de verwijzing:
Code:
Sub M_snb()
   Sheets("Rapportage").OLEObjects("CommandButton1").Name = "printen"
End Sub
. Dan wordt de naam van de knop netjes aangepast in printen. Maar doe ik dit nogmaals met bijvoorbeeld:
Code:
Sub M_snb()
   Sheets("Rapportage").OLEObjects("printen").Name = "printen_2"
End Sub
dan krijg ik de foutmelding: 1004.
 
Ik begrijp ook nog steeds niet waarom je de naam van een object zou willen veranderen.
 
De functionaliteit van de knop Opslaan & Printen moet komen te vervallen en aangepast worden in Printen nadat er op geklikt is. M.a.w. nadat de knop gebruikt is mag de knop niet nogmaals gebruikt worden om fraude te voorkomen. Het bestand mag alleen nog maar geprint worden.

Er zijn vele wegen die naar snb lopen, dus omdat het niet werkte bij mij, heb ik een knop Printen, achter de knop Opslaan & Printen gemaakt die pas zichtbaar wordt nadat de Opslaan & Printen knop gebruikt is.
 
Dan kan je gewoon het opschrift veranderen en aan de hand daarvan in de code bepalen wat er moet worden gedaan als erop wordt geklikt.
 
Ja klopt, maar ik was nou eenmaal die weg ingeslagen en had ook gezien dat het op die manier die snb aangaf ook werkte...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan