Print side | Luk vindue

Disable Input

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Makro og VBA
Forum beskrivelse: Hjælp til Makroer og VBA-programmering
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=4210
Udskrevet den: 04.Maj.2024 kl. 03:46


Emne: Disable Input
Besked fra: Skovgaard
Emne: Disable Input
Posteringsdato: 19.Mar.2020 kl. 10:21
Hej Alle,

Jeg er ved at lave et program til tidsregistrering.
Jeg har en kortscanner, som simpelt indsætter kortoplysninger i den aktive celle.

Når kortet er læst ind, vil jeg gerne deaktivere USB indgangen eller Excel, så man kun kan scanne én gang i f.eks. 5 sek.
Jeg har forsøgt med Application.Wait, men den gør ikke tricket, idét den stadig registrere kort læsninger, men så bare først indsætter data, efter f.eks. 5 sek.

Nogen idéer til at løse dette?

/Skovgaard



Svar:
Besked fra: Skovgaard
Posteringsdato: 19.Mar.2020 kl. 11:27
Har fundet en løsning, så I behøver ikke bruge tid på dette Smile

/Skovgaard


Besked fra: zpjj
Posteringsdato: 24.Mar.2020 kl. 10:34
Er det måske en løsning, som du vil dele med andre ?

-------------
Med venlig hilsen
Peter Juul

Jeg bruger EXCEL 2010


Besked fra: Bjarnehansen
Posteringsdato: 24.Mar.2020 kl. 12:35
Ja den løsning kunne da være spændene at se....

-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK


Besked fra: Skovgaard
Posteringsdato: 24.Mar.2020 kl. 13:24
Selvfølgelig vil jeg gerne dele, hermed koden Smile

Private Sub Worksheet_Change(ByVal Target As Range)

Static lasttime As Date
Dim r As Range, c As Range
Set r = Intersect(Target, Range("A:A"))
If Not r Is Nothing Then
    Application.EnableEvents = False
    If DateDiff("s", lasttime, Now) < 5 Then 'Tjekker at der ikke er scannet de sidste 5 sek.
        Application.Undo
    Else
        lasttime = Now
        For Each c In r
            c.Offset(0, 1).Value = Now
            c.Offset(0, 2).Value = Round(c.Offset(0, 1) * (24 * 60 / 5), 0) / (24 * 60 / 5)
            c.Offset(1, 0).Select
        Next c
    End If
    Application.EnableEvents = True
End If

End Sub


/Skovgaard



Print side | Luk vindue