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

Tekst uit een "vorm" (Shape) gebruiken in VBA

Status
Niet open voor verdere reacties.

HenkGerby

Gebruiker
Lid geworden
4 jan 2006
Berichten
69
Hallo,

excel 2010

Ik heb via "Insert" > "Shape" een vorm ingevoegd en hierin tekst aangebracht. (Dus met deze vorm een soort van knop gemaakt)
Nu wil ik hier een macro aan toebedelen, die de tekst van de knop kan "overnemen" en zo met 1 macro meerdere knoppen kan "uitlezen".
Helaas weet ik niet waar ik deze tekst moet zoeken. Via properties van de shape ( ik heb nu eenmaal de engelstalige versie ) , kan ik weliswaar de opmaak en zo regelen, maar niet de tekst benaderen.

Niet zo, zoals via "caption" bij een (besturings-) knop.

Iemand tips of moet ik alsnog "echte knoppen" aanmaken ?


Bvd dank en prettige feestdagen,

Henk
 
Laatst bewerkt:
Dank je voor deze snelle reaktie.

Door het deel na MsgBox te kopieren en te plakken kan ik nu inderdaad de tekst in een cel zetten:

Sub ttsr()
MsgBox ActiveSheet.Shapes(Application.Caller).TextFrame2.TextRange.Characters.Text
Range("A2").Value = ActiveSheet.Shapes(Application.Caller).TextFrame2.TextRange.Characters.Text
End Sub

Hiervoor moet ik echter eerst de tekstbox wegklikken: en als ik MsgBox weg laat, krijg ik een foutmelding

In mijn geval heb ik 10 knoppen , met elk een aparte tekst ( Jaap, Joep etc ).
Deze wil ik in een macro "vangen "door, als ik op 1 van de knoppen klik in de VBA code een "Naam" de waarde van de naam op de knop krijgt.
Met deze naam filter ik vervolgens de gewenste data uit een Vlookup lijst
 
Upload zelf eens je bestand met wat je wilt bereiken.
De code kan overigens iets korter worden geschreven.
Code:
 MsgBox ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text
 
Of nog iets korter:
Code:
MsgBox ActiveSheet.Shapes(Application.Caller).TextEffect.Text
 
@ Henk
Volgens mij moet je die hele regel weglaten.
Probeer het zo:
Code:
Sub ttsr()
    Range("A2") = ActiveSheet.Shapes(Application.Caller).TextEffect.Text
End Sub
 
Mooi gevonden!

'Texteffect' heb ik nog nooit gebruikt; dat scheelt weer een paar 'Characters'. :d
 
Waar is die plek waar we bier kunnen drinken voor een kwartje?
 

Bijlagen

Dag HSV en TimShell

Dat issem. Dit had ik gisteren al geprobeerd , maar als ik met de F8 toets door de macro liep gaf die steeds een fout.
Achteraf begrijpelijk omdat de shape met de gevraagde tekst niet aangeklikt was.

Voortschrijdend inzicht heetta geloof ik.

Prettige Kerst.

Henk
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan