Application.SendKeys zet abusievelijk mijn numeriek toetsenbord uit

Status
Niet open voor verdere reacties.

Robert Smidt

Gebruiker
Lid geworden
26 mei 2009
Berichten
901
Beste Helpmij'ers,

Ik zit even met een vreemd conflict in mijn script.
Code:
Range("L" & Target.Row).Select
Application.SendKeys ("Privé " & Range("N" & Target.Row) - Range("M" & Target.Row) - Range("O" & Target.Row) & " km omgereden via ")

Bovenstaande code werkt prima, alleen zet deze het numerieke gedeelte van mijn toetsenbord uit en wijzigt deze de komma in een punt op het numerieke gedeelte.

Is hier een oplossing of een alternatief voor?

Alvast hartelijk dank.

Robert
 
Probeer eens dit:
Code:
Application.SendKeys ("Privé " & Range("N" & Target.Row) - Range("M" & Target.Row) - Range("O" & Target.Row) & " km omgereden via ")[COLOR="#FF0000"], True[/COLOR]
 
Daar is inderdaad SendKeys niet voor nodig. Vermijdt tevens .Select en .Activate

Vervang dit:
Code:
Range("L" & Target.Row).Select
Application.SendKeys ("Privé " & Range("N" & Target.Row) - Range("M" & Target.Row) - Range("O" & Target.Row) & " km omgereden via ")

Door dit:
Code:
Range("L" & Target.Row).Value = "Privé " & Range("N" & Target.Row) - Range("M" & Target.Row) - Range("O" & Target.Row) & " km omgereden via "
 
Laatst bewerkt:
Op zich zou dit werken, echter moet de tekst aangepast worden en daarom was het handig om Sendkeys te gebruiken, is hier geen alternatief voor of misschien middels
Code:
 Application.SendKeys ("{F2}+{END}"), True
  of          Application.SendKeys "{F2}+{NUMLOCK}"
 
Je bedoelt dat de cel meteen in edit mode geplaatst moet worden?
 
Lijkt me alleen maar lastig. Dan kan je beter zoiets doen:
Code:
wrd = "Privé " & Range("N" & Target.Row) - Range("M" & Target.Row) - Range("O" & Target.Row) & " km omgereden via "
Range("L" & Target.Row).Value = wrd & InputBox(wrd)
 
Heel creatief van jou bedacht :thumb: en vind de oplossing top....Heel erg bedankt voor het meedenken!!!
 
Ok dan :)

Het probleem met SendKeys kan je trouwens op een houtje/touwtje manier wel omzeilen.
Als je de volgende code in een module zet:
Code:
Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
    
Sub SetNumLockOn()
    Dim NumLockState As Boolean
    Let NumLockState = CBool(GetKeyState(vbKeyNumlock) And 1)
    If Not NumLockState Then
        SendKeys "{NUMLOCK}", True
    End If
End Sub

Kan je de sub SetNumLockOn aanroepen die dan NumLock aan zet als deze uit staat.
 
Laatst bewerkt:
Dit is misschien nog een betere oplossing. Kan dit ook in de module Thisworkbook gezet worden dat wanneer numlock uitstaat deze jouw code activeert?
 
Dat stukje zet je in een gewone module en kan vanuit iedere andere module en/of sectie worden aangeroepen.
Die bovenste regel MOET in een module. Als je die ergens anders zet krijg je er een foutmelding op van de compiler.
Maar ik zou SendKeys niet gebruiken.
 
Laatst bewerkt:
Helaas werkt het niet, vreemd genoeg set de code het numerieke gedeelte niet op actief. Wat ik ook vreemd vind is dat de komma op het numerieke gedeelte vanaf dat moment alleen een punt geeft, ook wanneer ik handmatig deze op numeriek zet. Wanneer ik het programma opnieuw start is dat weer hersteld, totdat ik weer sendkeys gebruik.
 
Dan gebruik je het niet zoals het moet. Laat je document waar dat in zit eens zien.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan