Bij het kopiëren van het getal nul gaat alles mis

Status
Niet open voor verdere reacties.
Helaas gebeurt er niets. behalve dat de er 1 cel naar beneden of omhoog gaat en een b geplaats word in de cel bij de middelste knop. De middelste knop is geen probleem , daar kan ik gemakkelijk een +1, -1 of enter van maken. Die werkt prima.
Alleen de PgDn en PgUp lukt mij niet.
 
Kan je anders merk/type van je laserpen opgeven, eventueel de handleiding ?
Vermoedelijk werkt die net iets anders dan het klassieke toetsenbord en de erbij horende events.
 
als bijlage een foto. Verder niets van bekend. Er zat geen handleiding bij.
In een nieuw worksheet van excel gaat met rechts 1 cel naar beneden, met links 1 cel omhoog, de bovenste knop zet bij ieder keer indrukken een b erbij, de onderste knop opent zoeken/vervangen
 

Bijlagen

  • 20210722_112352.jpg
    20210722_112352.jpg
    563,9 KB · Weergaven: 24
Omdat de cursor maar 1 naar beneden of omhoog ging, heb ik ipv 36 nu 38 en 40 gebruikt en dat werkt goed. Voorlopig kan ik weer vooruit. Bedankt voor de reacties.

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
With TextBox1
If KeyCode = 13 And Len(.Value) = 0 Then .Value = 7 'als je op 1 van beide enter's drukt en de textbox is leeg, dan is dit hetzelfde als een 7 ingeven
If KeyCode = 66 And Len(.Value) = 0 Then .Value = 7
If KeyCode = 40 And Len(.Value) = 0 Then .Value = "+"
If KeyCode = 38 And Len(.Value) = 0 Then .Value = "-"


End With
End Sub
 
Mag waarschijnlijk ook zo
Code:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  With TextBox1
    If Len(.Value) = 0 Then
      Select Case KeyCode
        Case 13, 66: .Value = 7
        Case 38, 40: .Value = Chr(.Value + 7 - 2 * (KeyCode = 40))
      End Select
    End If
  End With
End Sub
 
Interessant, ik zal er eens uitproberen.
Ik heb nog een vraag. Op het numerieke toetsenbord wat ik voorheen gebruikte drukte ik de 5 in om een macro te activeren die de laatste ingave verwijderd.
Op de pointer zit nog 1 knop onderaan(twee vierkantjes door elkaar) die het menu "Zoeken en vervangen" te voorschijn tovert.
Is er een mogelijkheid om die knop te gebruiken om de macro "VerwijderenGegevensInCel" te activeren
 
Nog iets waar ik nu tegen aanloop is dat bij ons niveau biljarten de score nul nog altijd vaak voorkomt.
Op het numerieke toetsenbord druk ik een 0 in gevold door enter en het word in de lijst opgeteld.
Met de pointer als ik rechts zij indruk komt er 1 te staan nog eens indrukt word er 1 bi opgeteld in c12 dus 2 enz.
Ik moet eigenlijk beginnen met 0 ipv 1
wie heeft hier een oplossing voor?


Private Sub TextBox1_Change()


With TextBox1
If Len(.Value) = 0 Then Exit Sub 'staat er niets (meer) in je textbox = stoppen
Set c = Range("C12") 'de cel waarin je optelt en aftrekt



Sheets("Puntentelling").Select
ActiveSheet.Unprotect
Selection.Locked = False

Select Case .Value 'welke toets heb je gebruikt ?
Case 1, "+", "p": c.Value = c.Value + 1 'je tikte een 7, een p of + = +1
Case "-", "m": c.Value = c.Value - 1 'je tikte een 1, een "m" of - = -1
Case 0: c.Value = 0

Case 7 'je tikte een 6 = waarde wegschrijven
Call Macro22
c.ClearContents 'je reset je teller



'Case 0 'je tikte een 0 = 0 wegschrijven, speciale versie van 6
'Range("C12").Value = Array(0)
'Call Macro22
'c.ClearContents 'je reset je teller

Case 5 'je tikte een 5 = waarde wegschrijven
Call VerwijderenGegevensInCel
c.ClearContents 'je reset je teller

Sheets("Puntentelling").Select
Selection.Locked = True
ActiveSheet.Protect


Case Else: MsgBox "je drukte de toets " & .Value & vbLf & "Daar wordt verder niets mee gedaan", vbInformation 'bij alle andere letters geef je een boodschap
End Select

.Value = ""
End With
End Sub
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
With TextBox1
If KeyCode = 13 And Len(.Value) = 0 Then .Value = 7 'als je op 1 van beide enter's drukt en de textbox is leeg, dan is dit hetzelfde als een 7 ingeven
If KeyCode = 66 And Len(.Value) = 0 Then .Value = 7
If KeyCode = 40 And Len(.Value) = 0 Then .Value = "+"
If KeyCode = 38 And Len(.Value) = 0 Then .Value = "-"



End With
End Sub
 
De ene kwestie om de nul te laten versturen door op de pointer bovenste knop te drukken, heb ik opgelost.

Wat overblijft is het probleem om de middelste knop onder op de pointer zo te veranderen dat die hetzelfde doet als de 5 van het numerieke toetsenbord. Nu produceert die knop het menu "Zoeken en vervangen"
Als de 5 wordt ingedrukt haalt die de laatste score eruit, zodat je opnieuw kan invoeren voor die beurt.

Mocht dat niet mogelijk zijn is het misschien een optie om de linker knop te gebruiken die nu het getal met 1 verminderd. Normaal zou de knop misschien 1 keer worden gebruikt bij een fout of discussie met de scheidsrechter.
Als ik die vaker in zou drukken, is het dan mogelijk na de derde keer ipv -1 (Case "-")te genereren de 5 in te drukken op het numm. toetsenbord, zodat de laatste stand word weggehaald (case 5 VerwijderenGegevensInCel)

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
With TextBox1
If KeyCode = 13 And Len(.Value) = 0 Then .Value = 7 'als je op 1 van beide enter's drukt en de textbox is leeg, dan is dit hetzelfde als een 7 ingeven
If KeyCode = 66 And Len(.Value) = 0 Then .Value = 7
If KeyCode = 40 And Len(.Value) = 0 Then .Value = "+"
If KeyCode = 38 And Len(.Value) = 0 Then .Value = "-"


End With
End Sub
 
ik volg niet helemaal meer met die textbox of de commandbutton, dus dat moet je eventueel aanpassen, de ene heeft een KeyAscii, de andere een Keycode, die zijn niet 1-op-1 gelijk.
In onderstaande kan je bijvoorbeeld een toets langer dan 2 sec ingedrukt houden en dan zou die een andere betekenis kunnen krijgen.
Dus in het ene geval (=kort vasthouden) +1 en in het andere geval (=tss 2-10 sec) een reset geven.
 

Bijlagen

Bedankt voor de reactie. Helaas denk ik niet dat ik met die oplossing iets kan.

Waar ik aan denk is dat als ik op de pointer de linker knop bv 3 keer achter elkaar indruk (Dus dan gaat de teller op C12 met 3 punten naar beneden) Dat bij de derde keer de functie van de "-" niet een -1 uitvoert maar macro 5 uitvoert.
Ik denk aan een If Then Else functie. Dus de eerte twee keer doorloopt hij normaal om bij de derde keer de 5 te pakken. Zou dit mogelijk zijn?

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
With TextBox1
If KeyCode = 13 And Len(.Value) = 0 Then .Value = 7 'als je op 1 van beide enter's drukt en de textbox is leeg, dan is dit hetzelfde als een 7 ingeven
If KeyCode = 66 And Len(.Value) = 0 Then .Value = 7
If KeyCode = 40 And Len(.Value) = 0 Then .Value = "+"
If KeyCode = 38 And Len(.Value) = 0 Then .Value = "-"

'If KeyCode = 38 And Len(.Value) = 0 Then .Value = 5

End With
End Sub
 
wat is er nou simpeler, detecteren dat je een knop minstens 2 sec vasthoudt of detecteren dat je een knop 3 keer indrukt in een tijdspanne van bv. 5 sec ?
Bezos is nu ook al astronaut, dus optie 2 moet ook te programmeren zijn als complexere variant op optie 1.
 
Laatst bewerkt:
Het verschil tussen ons is dat mijn kennis in vba code lager school is en jij een professor op de universiteit. Met andere woorden wat jij bekijkt als simpel zie ik als soms als abracadabra.
 
ik ben je ergens 20 reacties geleden verloren, je bent blijven hangen in die textbox en op aangeven van SNB was ik bij een commandbutton beland.
Die laat zich gemakkelijker manipuleren.
enig probleempje is dat iedere toets een bepaald nummer krijgt, dus een 1 op het numeriek toetsenbord is niet hetzelfde als de 1 bovenin je alfanumeriek toetsenbord.

Klik je op de knop "actief" dan wordt die groen en kan je spelen met je 1, 7, 6 en 0.
Daar kan je nu ook je knoppen van je laserpen naast zetten, zodat die gelijk op lopen.
Hou je nu de 1 knop langer ingedrukt, dan zie je onderin op de statusbalk de tijd lopen en na 2 sec wordt de achtergrond van B12 rood.

Op die manier zou je kunnen je laserpen laten werken binnen het programma.
Hoe precies, tja, daarvoor zou ik van je te horen moeten krijgen welk nummer je krijgt bij welke toets
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan