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

SendKeys vs. DDEExecute

Status
Niet open voor verdere reacties.

Cartucci

Gebruiker
Lid geworden
18 aug 2018
Berichten
65
Besten,

Ik heb een tweetal scriptjes welke in een spreadsheet draaien en het gebied waar de datum van vandaag getoond wordt, automatisch in beeld brengen.

Nu lijkt het erop dat het nummerieke toetsenbord niet correct meer functioneert. De toetsen werken niet meer als cijfers maar verplaatsen de cursor. Druk je NumLock uit, dan werken de cijfertoetsen weer.

Na wat zoekwerk, lees ik dat dit mogelijk aan het commando SendKeys kan liggen wanneer dit in een aantal scripts is gebruikt. In dit geval 2 x en wel in onderstaande scripts.

Heeft iemand een idee hoe dit te wijzigen i.c.m. DDEEexecute zodat het nummerieke toetsenbord correct blijft functioneren?

------------------------------------------------------------
Private Sub Workbook_BeforeClose(CANCEL As Boolean)
Interaction.SendKeys "^{f1}", True
ActiveWindow.DisplayHeadings = True
Application.DisplayFormulaBar = True
End Sub

----------------------------------------------------------------

Private Sub Workbook_Open()
Application.SendKeys "^{f1}", False
ActiveWindow.DisplayHeadings = False
Application.DisplayFormulaBar = False

For Each cl In Range("ag5:kk5")
If cl = Date Then cl.Offset(0, 0).Activate
Next cl
End Sub
 
Lijkt mij een vrij nutteloze code. .offset (0,0) doet niet zo heel veel. Een lusje gebruiken om de datum te vinden is ook nogal overbodig. Waarom je morrelt aan de standaard instellingen is ook een beetje een raadsel.
 
De codes doen wat ik van ze verwacht. Mogelijk zit er wat overbodigs in maar dat doorzie ik onvoldoende om te kunnen beoordelen.

Ik ben op zoek naar een mogelijkheid om SendKeys te vervangen door DDEExecute om de NumLock (mogelijk) weer normaal te laten functioneren.

Vooropgesteld dat dit mogelijk is: Kan iemand helpen door aan te geven hoe dit op te lossen is?
 
Code:
Private Sub Worksheet_Activate()
    Cells.Find(Date, , xlValues, xlWhole).Select
End Sub
en/of
Code:
Private Sub Workbook_Open()
    Cells.Find(Date, , xlValues, xlWhole).Select
End Sub
net wat je makkelijk vindt
 
Hartelijk dank! Ik heb de codes gewijzigd en nu moet ik in de praktijk nog ondervinden of de num lock normaal reageert. Ik sluit deze vraag daarom nog even niet om dat nog te laten weten.
 
Deze codes doen niets met numlock.
 
Nee, dat klopt en het werkt wat dat betreft weer normaal met Num Lock. Het enige wat ik nu als foutmelding krijg bij openen van het bestand, is het volgende:

Het heeft betrekking op de 2e regel in dit script:

Private Sub Workbook_Open()
Cells.Find(Date, , xlValues, xlWhole).Select
End Sub


De foutmelding luidt:

Fout 91 tijdens uitvoering:
Objectvariabele of blokvariabele With is niet ingesteld

Enig idee wat hier de oorzaak van kan zijn? Wegklikken van de melding laat het spreadsheet verder normaal functioneren.
 
Code:
Private Sub Worksheet_Activate()
    On Error Resume Next
    Cells.Find(DateValue(Date), , xlFormulas, xlWhole).Select
    On Error GoTo 0
End Sub
Code:
Private Sub Workbook_Open()
    On Error Resume Next
    Cells.Find(DateValue(Date), , xlFormulas, xlWhole).Select
    On Error GoTo 0
End Sub
bron: http://www.cpearson.com/excel/DateTimeVBA.htm#Finding
Getest met window8en, en excel2007nl
 
Dit werkt perfect! Dankjewel voor het meedenken en voor de oplossing.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan