Macro buiten userform

Status
Niet open voor verdere reacties.
Ik denk dat je voldoende hebt aan de manier waarop je die tekst vanuit VBA benaderd?
Het gaat om Shape 7, dus:
Sheets("Hoofdmenu").Shapes(7).TextFrame.Characters.Text = "De Tekst"

Op de wijze van HSV dus maar nu met de juiste sheet naam en shape nummer.
 
Laatst bewerkt:
Waar haal jij het shape nummer vandaan? De rest had ik namelijk al aangepast en toen werkte het niet. Wat dus logisch bleek.
 
Ik had even een klein loopje gemaakt om in dat sheet door de shapes heen te wandelen en dan het shapenummer als tekst op de shape te zetten. Simpel ;)
 
Simpel?????????? Mag ik dat loopje van jouw hebben en waar je het in geplaatst had. Dit is denk ik wel handig als er ook nog andere knoppen van tekst moeten veranderen.

Anyway het werkt. Heb het verwerkt.

Code:
Sub Instellingen_1()
'Knop
    If frm_005.CheckBox1.Value = False Then
        Sheets("Wachtwoord").Select
        frm_005.Show
        
            ThisWorkbook.Worksheets("Hoofdmenu").Unprotect "1235"
            Sheets("Hoofdmenu").Shapes(7).TextFrame.Characters.Text = "Instellingen" & vbNewLine & "Toegankelijk"
            ThisWorkbook.Worksheets("Hoofdmenu").Protect "1235"
            
    ElseIf frm_005.CheckBox1.Value = True Then
        Call Instellingen_2
    End If
    
End Sub
 
Ok dan! :)
Ik zal dat loopje even opnieuw maken want ik heb het blad niet opgeslagen.
 
Probleem nu alleen is dat de tekst meteen bij opstarten van het hoofdmenu al veranderd terwijl dit moet gebeuren na OK van frm_005, maar dat komt denk ik omdat ik de code in de verkeerde sub heb geplaatst.
 
Ook weer opgelost. Zat hem inderdaad in de plaatsing. Nu geplaatst onder de OK button van frm_005. Onder de afsluitbutton van frm_006 heb ik de andere tekst gezet.

Edmoor als ik jouw loopje nog mag krijgen, dan heel graag.

Snb, HSV, Edmoor, bedankt voor jullie inbreng.

Kan ik weer verder. Wel even nog een nieuwsgierige vraag aan jou Edmoor, gezien dat jij door mijn bestand ben gelopen. Was de weg er naar toe een beetje overzichtelijk en begreep je het? Ben ik altijd wel benieuwd naar. Dit voor eventuele opmerkingen om verbeteringen.
 
Je hebt geen loop nodig.
Selecteer het tekstvak en linksboven (waar anders het adres van de geselecteerde cel staat) staat de naam van het tekstvak.
Gebruik die in je code.

Code:
Sub M_snb()
    Sheet1.Shapes("textbox 1").TextFrame.Characters.Text = "ja ja"
End Sub
 
Sorry snb die volg ik niet helemaal.

Wat doet jouw macro precies en waar plaats je die dan. Nog sterker, hoe activeer ik deze?
 
Dit is het loopje dat ik gebruikte. Zorg ervoor dat het blad bewerkt kan worden.
Zet deze sub ergens in een module, plaats de cursor dan ergens tussen de Sub en End Sub en druk dan op F5 om hem uit te voeren.

Code:
Sub Vormen()
    Dim i As Integer
    On Error Resume Next
    Sheets("Hoofdmenu").Select
    For i = 1 To Sheets("Hoofdmenu").Shapes.Count
        Sheets("Hoofdmenu").Shapes(i).TextFrame.Characters.Text = "Shape" & i
    Next
End Sub

De shapes krijgen nu als tekst Shape en z'n nummer, sla het blad hiermee dus niet op.
Ik heb deze gebruikt voor het gemak. Het is een uitgebreid project en op deze manier kwam ik het snelst achter de juiste shape.

Ik heb het project verder niet bekeken dus kan er geen oordeel over geven. Het enige wat ik ermee wilde was je van de juiste code voor het gestelde probleem te voorzien.
Het zier er wel mooi uit :)
 
Laatst bewerkt:
Oke Edmoor bedankt. Ik plaats deze wel in een aparte module zonder het bestand op te slaan. Deze is in feite enkel noodzakelijk als ik bewerkingen wil uitvoeren en inderdaad bij opslaan ben ik alle eigenlijke teksten op de knoppen kwijt of ik moet daar weer een sub voor maken dat deze knoppen de juiste tekst krijgen bij openen en terugstellen, maar dat is een beetje erg overdreven. Wat ik wel kan doen is een kopie maken van het bestand en dan de sub uitvoeren en dan opslaan. Zo heb ik altijd een soort achtergrond. :D

Bedankt dat je het bestand er netjes uit vind zien. Ik doe mijn best en wil het er wel goed uit laten zien. Immers het is toch iets waar ik en anderen mee moeten werken enne het oog wilt ook wat :p. Kost mij alleen wel heel veel tijd, maar dat komt ook omdat ik er nu zoveel mee bezig ben. Je ziet mij binnenkort wel weer terug. Immers er moeten nog weg schrijvingen worden gemaakt naar de databases. Hier is toen WarmBakkertje mee bezig geweest, maar die is denk ik op vakantie.
 
Laatst bewerkt:
Het is een handig tooltje om achter het nummer te komen van een shape op een bepaald werkblad.
We zien je wel weer terug :)
 
Heel handig tooltje. Ik heb hem in een kopie geplaatst. Zo kan ik straks ook de juiste verwijzingen geven, omdat de originele lay-out volledig opnieuw is opgezet. Als het vba project af is, moet ik deze nog synchroniseren met de daadwerkelijke layout. Anders werkt het nog niet.

Slotje gaat erop.

Nogmaals allen bedankt.
 
Het je uitgevoerd wat ik in de tweede zin beschreef ? (beginnend met 'Selecteer'....)

Sorry snb die volg ik niet helemaal.

Wat doet jouw macro precies en waar plaats je die dan. Nog sterker, hoe activeer ik deze?
 
Snb wat ik niet volg is het feit selecteren.

Selecteer je enkel de knop of selecteer je enkel de tekst op de knop. Ga je hierna met een klik op de rechtermuisknop in het dan opkomende menu ergens naar toe of doe je iets anders?
 
@snb:
Dat loopje is inderdaad niet nodig om een shape van tekst te voorzien maar was puur bedoeld om per shape het juiste nummer in beeld te krijgen zodat deze in de code kan worden gebruikt om aan een bepaalde shape te refereren. Een hulpmiddeltje bij de ontwikkeling dus.
Shapes krijgen een arbitraire naam dus zeker als je aan een project van een ander moet werken is dat gewoon even handig.

Op verzoek van TS heb ik hem zo gewijzigd dat hij dat voor iedere shape in ieder sheet doet:

Code:
Sub ToonShapeNummer()
    Dim i As Integer
    Dim j As Integer
    On Error Resume Next
    For i = 1 To Sheets.Count
        Sheets(i).Select
        For j = 1 To Sheets(i).Shapes.Count
            Sheets(i).Shapes(j).TextFrame.Characters.Text = "Shape" & j
        Next
    Next
End Sub

Wat ik dan zelf doe is een screenshot per sheet opslaan en het document afsluiten zonder op te slaan.
Je hebt dan de juiste nummers en bij het heropenen van het document staan de juiste teksten er weer.
 
Laatst bewerkt:
Je kunt met de cursor boven een vorm (shape) gaan staan en op de rechtermuis klikken. Dan is de vorm geselecteerd en zie je linksven de naam.

@edmoor

Ik begrijp jouw methode. Is ook prima :thumb:. Ik wilde alleen maar aangeven hoe je ook op een andere manier achter de naam van een vorm kunt komen en met welke code je dan de tekstinhoud kunt wijzigen.
 
Niks mis mee maar ik denk dat het TS in verwarring bracht, vandaar even de extra uitleg :)
 
Snb bedankt ik moest even verder kijken dan mijn neus lang is. Je had beter kunnen zeggen aan de meest linkerkant van de formulebalk. Hier komt inderdaad een tekst te staan: Afgeronde rechthoek. Echter....

Ik heb de macro van Edmoor in de juiste layout gebruikt en dan krijg ik met jou toch echt een verschil.

De macro van Edmoor geeft aan dat het om, in de nieuwe layout, shape 17 gaat. In jouw gestelde staat er linksboven in het scherm naast de formulebalk: Afgeronde rechthoek 16. Doe ik dan toch iets verkeerd bij jouw uitleg.
 
De naam van een shape is iets heel anders dan het objectnummer van een shape.
Het nummer wat in de naam wordt genoemd staat helemaal los van het objectnummer van de shape.
Zelf vind ik het eenvoudiger om met de objectnummers van shapes te werken.
Kies 1 methode, gebruik ze niet door elkaar, dat geeft alleen maar verwarring.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan