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

macro starten door een letter in een cel te typen

Status
Niet open voor verdere reacties.

zwerfrat

Nieuwe gebruiker
Lid geworden
15 nov 2008
Berichten
3
Hoi

Hoi ik wil aan mijn toetsen bord een aantal knoppen bevestigen die op verschillende letters zitten, alleen als zo'n knop wordt ingedrukt start een macro, elke knop zit aan een apparte letter gekoppeld.
de knoppen staan een eind van de computer af dus er kan geen gebruik worden gemaakt van de muis of enter toets

nou is mijn vraag of het mogelijk is dat als je in een cel een letter type dat dan een macro wordt gestart

bv: als ik in cel B2 een a type dat dan macro 1 loopt , type ik in cel b3 een b dan start macro 2 ( ipv letters mag het ook met cijffers).?

Indien dit mogelijk is hoe moet het dan?

alvast bedankt
 
Beste zwerfrat ;)

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If [B2] <>"" Then

Macro1

If [B3] <>"" Then

Macro2

End If
End If

End Sub

Plak deze in BLAD1 van de VBA Editor.

Groetjes Danny. :thumb:
 
@ Danny , het kan korter ;)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target = [B2] Then MsgBox "Hallo, je koos " & [B2]
  If Target = [B3] Then MsgBox "Hallo, je koos " & [B3]
End Sub
met dank aan snb :)
 
de knoppen staan een eind van de computer af dus er kan geen gebruik worden gemaakt van de muis of enter toets
Ik zou persoonlijk de aanschaf van een draadloze muis en -toetsenbord in overweging nemen....:rolleyes:

WAT heb je in vredesnaam voor constructie in gedachten met die knoppen die verbonden zijn aan je toetsenbord???

Groet, Leo
 
@ Danny , het kan korter ;)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target = [B2] Then MsgBox "Hallo, je koos " & [B2]
  If Target = [B3] Then MsgBox "Hallo, je koos " & [B3]
End Sub

Vergeet wel niet Address te gebruiken.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target[B].Address[/B] = [B2][B].Address[/B] Then MsgBox "Hallo, je koos " & [B2]
  If Target[B].Address[/B] = [B3][B].Address[/B] Then MsgBox "Hallo, je koos " & [B3]
End Sub
 
Code:
If Target.Address = ("$A$1") Then MsgBox "Hallo, je koos " & [B2]
 
Code:
If Target.Address = ("$A$1") Then MsgBox "Hallo, je koos " & [B2]

Ik gebruikte [B2].Address om dit te onderstrepen, maar inderdaad, met het resultaat van [B2].Address kan je ook rechtstreeks gebruiken. $B$2 m.a.w.

De haakjes mogen ook weg.
 
Uitleg:
I.
Target is een gebied (Range): Private Sub Worksheet_Change(ByVal
Target As Range)
[B2] is een gebied (Range)

met
If Target = [B2] Then MsgBox "Hallo, je koos " & [B2]
vergelijk je dus 2 vergelijkbare dingen (geen appels met peren).

II.
Target.address is een tekstreeks (string)
[B2] is een gebied (range)
Target.address en [B2] kun je daarom niet met elkaar vergelijken (want appels met peren)

III.
Target.address is een tekstreeks (string)
[B2].address is een tekstreeks (string)
Target.address en [B2].address kun je dus met elkaar vergelijken (want geen appels met peren)

IV.
verwarring ontstaat in
If Target = [B2] Then MsgBox "Hallo, je koos " & [B2]
Target in een gebied (range)
[B2] in de vergelijking (Target =[B2]) wordt beschouwd als gebied (Range)
[B2] in de tekstreeks van de mededeling (MsgBox), wordt beschouwd als de basiseigenschap (default) van cel B2. Hier wordt [B2] gelezen als [B2].Value.

VBA blinkt niet immer uit in consistentie (to put it mildly).
Maar als je er achter bent gekomen 'hoe het werkt' kun je er wel je voordeel mee doen.
En de oorspronkelijke vragensteller kan met de aangedragen suggestie met 1 VBA-coderegel een aparte macro starten voor iedere toets van het toetsenbord (toch Trucker ??).
 
Laatst bewerkt:
Uitleg:

En de oorspronkelijke vragensteller kan met de aangedragen suggestie met 1 VBA-coderegel een aparte macro starten voor iedere toets van het toetsenbord (toch Trucker ??).
Ik kan vanaf mijn toetsenbord met de oneliner toch de macro starten of het nu numerieke of alfabetische input is .
En in # 11 staat een duidelijke uitleg wat je anders op 100 verspreiden bladzijden in een handboek kan lezen .
snb mijn dank is groot voor de les ( uitleg ) ooit ga ik het snappen :)
 
dank aan snb! :thumb:

Het heeft bij mij ook lang geduurd tegen dat ik die Target degelijk kon gebruiken :)
 
hallo allemaal.

ten eerste bedankt voor de reactie's


dat gene met een draadloze muis heeft mij op een idee gebracht,:thumb: ik heb op de linker knop van muis een draad bevestig waaraan 2 grote knopen waardoor het geheel werkt. met een stukje elektronica eraan werkt het ook.
(elke keer als ik een letter in een cel type moest ik op enter drukke of muis kklikken)

met eerste over if heb ik ook in een macro verwerkt en bepaalde formules met als funktie gedaan.

het gedeelte met target ging mij helaas boven mijn pet.

met hetgene wat ik op helpmij heb gevonden ben ik een eind verder gekomen.

zal het progr. bij plaatsen misschien dat iemand mij nog helpen met verfijnnen ervan.

een korte uitleg:
het groene gedeelte wordt alleen straks zichtbaar
als er op een knop wordt gedruk dan als de muisaanwijzer boven de macro staat dan gaat een klok lopen, weer een druk op de knop en de tijd stop en wodrt deze geregistreerd.
er is een tijd die als de snelste tijd wordt geplaats en je kan de snelste tijd van de dag plaatsen.
met de rode knop stopt alle macro's

het gene wordt straks gebruikt bij een glijbaan.
boven aan kunnen ze kijkken en onder kunnen ze de tijd zien

als iemand toch weet hoe ik dit helemaal met een toetsebord kan doen dus de knop boven en de knop onder appart schakelen zonder elektronica hoor ik het graag.

Bekijk bijlage glijproef 05.xls
 
Maak 2 knoppen uit de werkset besturingselementen knop_start en knop_stop.

Gebruik deze code en je bent klaar:

Code:
Private Sub knop_start_Click()
  knop_start.Caption = Timer
End Sub

Private Sub knop_stop_Click()
  [B9] = Format(Timer - (1 * knop_start.Caption), ".00")
  knop_start.Caption = "Start"
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan