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

Application.OnKey

Status
Niet open voor verdere reacties.

bandito bob

Terugkerende gebruiker
Lid geworden
26 jun 2007
Berichten
2.167
Beste excel liefhebbers,

Ik heb al enkele uren geprobeerd om in een excel sheetje een macro te laten sturen met een toets (niet met CTRL+toets), maar krijg het niet voor elkaar.
Als ik de toets indruk krijg ik altijd de melding dat de macro niet gevonden kan worden.

Ik ben pas kort bezig met VBA, dus graag geen al te ingewikkelde VBA uitleg.

De code waar het om gaat heb ik van dit forum en is de volgende:
Code:
Private Sub Workbook_Open()
Application.OnKey "m", "reg"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnKey "m"
End Sub

Sub reg()
    Dim eindTijd As Date
    eindTijd = DateTime.Now
    Cells(aankomsten, 2) = eindTijd
    aankomsten = aankomsten + 1
    Beep
End Sub
Hij geeft dus de melding dat de macro reg() niet gevonden kan worden.
De eerste 2 code's staan in "thisworkbook", de macro reg() heb ik geprobeerd in "thisworkbook en in sheet 1 (hier wordt de macro gebruikt).

Indien nodig kan ik natuurlijk ook het hele sheetje posten.

Als iemand kan helpen.....graag. gr. Paul.
 
hang het bestandje bij ... gaat het toevallig om het registeren van tijden waarneer het bestandje wordt gebruikt?

gr
 
Laatst bewerkt:
hang het bestandje bij ... gaat het toevallig om het registeren van tijden waarneer het bestandje wordt gebruikt?

gr

Zo, dat is een snelle reactie.
Ja, hij wordt inderdaad gebruikt om tijden te registreren.
Ik heb het hele bestandje bijgehangen.

gr. Paul.
 

Bijlagen

Dat gaat ook niet lukken.

Private Sub Workbook_Open()
wil zeggen, dat de macro uitgevoerd wordt als je het bestand opent.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
wil zeggen, dat de macro uitgevoerd wordt voordat het bestand gesloten wordt.

En dat allemaal zonder tussenkomst van de gebruiker

Sub reg() wordt automatisch aangeroepen bij het openen van het werkboek.Dus in Private Sub Workbook_Open()

Als je een macro zelf wilt uitvoeren, dan zul je hem in een module moeten plaatsen en niet in ThisWorkbook.

Kom je daar niet uit, dan horen we het wel.

Mvg

Piet
 
Ik heb nu de sub reg() in een module geplaatst. Hij kan hem nu wel vinden:) maar ik krijg een fout melding in de regel:
Code:
Cells(aankomsten, 2) = eindTijd

Fout 1004 tijdens uitvoering.
Door de toepasssing of door object gedefineerde fout.

Het uitvoeren van de macro (en dus ook deze regel) middels een knop ging uitstekend, maar ik zou het liever met een knop (liefst spatie) willen aansturen.
 
Die foutmelding zal wel het gevolg zijn van het feit dat je "aankomsten" nergens hebt gedefinieerd en geïnitialiseerd op een aanvaarde waarde. Nu wordt die waarde de eerste keer geïnitialiseerd op 0, en dat ik combinatie met cells, levert een opdracht op dat hij de cel op de 0de-rij en de 2de kolom moet nemen, maar rijen beginnen te tellen vanaf 1, dus rij 0 is een waarde die niet bestaat vandaar de foutmelding.

Nog een kleine opmerking: voor het statement cells verwijs je niet naar een sheet, dus wanneer je telkens die sub wil uitvoeren op de cellen van het op dat moment actieve werkblad gaat dat geen onverwachte resultaten opleveren. Wens je echter deze bewerkingen telkens uit te voeren op 1 welbepaalde sheet, onafhankelijk van in welke sheet je je bevindt, dan dien je voor het cells statement een verwijzing naar dat bepaald werkblad in te geven.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan