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

Namen invoeren m.b.v. macro's

Status
Niet open voor verdere reacties.

FreddyJ

Gebruiker
Lid geworden
27 jul 2014
Berichten
12
Ik ben bezig met een programma waar je zonder toetsenbord namen moet invoeren. Ik heb een toetsenbord gemaakt waar je met de muis(macro) de letters kan aanklikken. Deze letters worden vervolgens weer in een aparte cel geplaatst zodat een naam ontstaat. Telkens als ik een nieuwe letter toevoeg maakt hij de cel leeg i.p.v. deze letter toe te voegen. Nu heb ik het ook met een sub blad geprobeerd en alle letters die daar worden ingevoerd worden op alfabetische volgorde in de cel geplaatst: =(A1&B1&C1) dit t/m z.
Wie weet raad?totsenbord.jpg
 
Je voegt dus geen letter toe maar vervangt de inhoud door de letter waarop wordt geklikt.
 
Beste,

Best jouw VBA-code of het bestand posten.

Je zou kunnen het volgende kunnen proberen : range("cel naam speler1").value= range("cel naam speler1").value& range("aangeklikte cel").value

mvg,
tkint
 
Hier de macro van de letter Q m.b.t. de invoer. Heb dus 26 van deze macro's aangemaakt.

Sub Q()
'
' Q Macro
'

'
Range("J19:P19").Select
ActiveCell.FormulaR1C1 = "q"
Range("Q19").Select
End Sub
 
De smiley is uiteraard een dubbele punt. Waarom hij deze weergeeft in het bericht weet ik ook niet.
 
Waarom hij deze weergeeft in het bericht weet ik ook niet.
Omdat je geen code tags gebruikt.

Je wilt ieder letter in een aparte cel hebben? Dat is namelijk wat je doet.
Als je een hele naam wilt invullen in 1 bepaalde cel dan gaat dat in ieder geval niet op die manier en die .Select opdrachten kunnen helemaal weg.
 
Hoe zou de macro er dan uit moeten zien? Als ik gebruik maak van een hulpblad en verwijs elke macro naar de bijbehorende cel A=A1,B=B,C=C1 enz. Als ik dan een cel verwijzing maak in een andere cel:
=(A1&B1&C1) enz. dan zet hij deze op alfabetische volgorde. Bij gepost het Excel bestand. Link: http://www.mijnbestand.nl/Bestand-Z7VBIWRKP7IV.rar
 
Het document dat je bijvoegde zit geen macro in en als je een macro wilt toewijzen staat en al een document met de naam Tellijst biljart Twentehallen1.xlsm'!Q. Die is niet bijgevoegd. Wil je nu die naam in het veld Naam Speler 1 laten verschijnen of is iets anders de bedoeling?
 
Code:
Sub typeQ()
Range("J19").Value = Range("J19") & "Q"
End Sub
Probeer het hier eens mee voor de letter Q
+25 gelijksoortige voor de overige letters.


Nu even op SNB wachten die alles vast wel (in plaats van 26 codes) in 1 regel kan zetten.
 
Geef iedere shape, want het zijn shapes, zijn eigen naam. De Q noem je ShapeQ, de W noem je ShapeW enzovoort. Wijs ze allemaal een macro met de naam Letter toe. Dit is dan de macro met de naam Letter:

Code:
Sub Letter()
    Range("J19") = Range("J19") & LCase(Right(Application.Caller, 1))
End Sub

@popipipo:
Ok, 3 regels, maar ik ben snb niet... ;)
 
Laatst bewerkt:
Bedankt Popipipo en Edmoor voor jullie reactie. Ik heb het volgende toegevoegd en het werkt:

Sub E()
'
' E Macro
'

'
Range("J19").Value = Range("J19") & "e"
End Sub
 
Maar zo moet je 26 macro's maken. Op mijn manier maar eentje.
 
Ok, 3 regels,

Ik beschouw dit ook als een regel. (sub en endsub niet meerekenen doen we bij SNB ook niet.)
Ik had ook al in gedachte om de letter uit de afbeelding te halen maar hoe dat wist ik niet.
 
Dat kan dus zoals ik liet zien. De naam van de shape kun je wijzigen door er met rechts op te klikken en dan in het vak waar je normaal gesproken de cellen een naam geeft, de naam aan te passen.

Met de opdracht Application.Caller krijg je de naam van de Shape terug in de macro die eraan toegekend is.

Ik beschouw dit ook als een regel. (sub en endsub niet meerekenen doen we bij SNB ook niet.)
Dat was ook maar een geintje :P
 
Laatst bewerkt:
Ok maar hoe zit het dan met een spatie??
 
Voor spatie en andere tekens geef je de shape een logische naam voor wat hij moet doen en pas je de macro iets aan. Bijvoorbeeld ShapeSPACE en ShapeDEL. De macro zou er dan bijvoorbeeld zo uit kunnen zien:
Code:
Sub Letter()
    Select Case Application.Caller
        Case "ShapeSPACE"
            Range("J19") = Range("J19") & " "
        Case "ShapeDEL"
            Range("J19") = Len(Range("J19") - 1)
        Case Else
            Range("J19") = Range("J19") & LCase(Right(Application.Caller, 1))
    End Select
End Sub
 
Laatst bewerkt:
Weer wat geleerd
Dank je wel
 
Graag gedaan. En uiteraard kan TS daar ook zijn voordeel mee doen :)
 
Op deze manier moet je geen 26 macro's toewijzen, maar gebruik je slechts 1 macro die je toewijst aan alle shapes.
Alle shapes hebben als naam shape+ascii-teken voor die letter bv A wordt dan shape65, B shape66, enz....
Dan kan je met Chr die cijfers uitlezen en weergeven in Range("J19").
Code:
Sub Letter()
    Select Case Application.Caller
        Case "shape8" 'Backspace
            Range("J19") = Left(Range("J19"), Len(Range("J19")) - 1)
        Case "shape127" ' Delete
            Range("J19").Select
            Application.SendKeys "{DEL}"
        Case Else 'gewone letters en spatie (chr 32)
            Range("J19") = Range("J19") & Chr(Right(Application.Caller, 2))
    End Select
End Sub

De bijlage heb ik er bijgevoegd zodat het bestand niet verloren gaat als het bij MijnBestand gewist wordt en er dan steeds een referentie is.
 

Bijlagen

Laatst bewerkt:
Erg bedankt voor jullie oplossingen. Ik heb al snel in de gaten nog een grote onbekende te zijn op het gebied van VBA, maar met mijn bijna 50 wil ik toch een poging wagen. Met al die handreikingen krijg ik het toch voor elkaar om een biljart(dummy) programma maken. Het klavier bestand heb ik opgeslagen. Helaas had ik al wel 26 macro's aangemaakt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan