Microsoft Excel

Herbers Excel/VBA-Archiv

Wenn kein Vorgang -> dann Inhalt löschen

Betrifft: Wenn kein Vorgang -> dann Inhalt löschen von: Ben
Geschrieben am: 07.10.2014 20:41:24

Hallo Zusammen,

ich habe in meiner Datei ein Selection Change event.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)


Application.OnKey "~", "MyEnterEvent"


End Sub

Das Enter Event sieht dann so aus, dass der Inhalt von D8 in eine Liste übertragen wird aber nur dann wenn die Nummer des Mitarbeiters noch nicht in der Liste vorhanden ist. Deswegen habe ich in I1 einfach mit Zählenwenn gearbeitet.

K1 verweist auf D8.
Sub MyEnterEvent1()

If Sheets("Mitarbeiterliste").Range("I1") = 1 Then
GoTo weiter
Else

    Sheets("Mitarbeiterliste").Range("K1").Copy
    x = Sheets("Mitarbeiterliste").Range("J65536").End(xlUp).Row
    Tabelle2.Cells(x + 1, 10).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End If
    
weiter:
    Range("D8").Select

End Sub
Meine Mitarbeiter sollen sich bevor sie anfangen zu arbeiten abscannen, damit sie erfasst werden.

Wenn der Mitarbeiter sich abscannt, erscheint sein Name auf dem Bildschirm (Sverweis). Ich möchte jetzt aber, dass wenn sich kein weiterer Mitarbeiter mehr abscannt, dass dann der Name des vorherigen Mitarbeiters verschwindet und dann ein Text "Bitte abscannen" dort steht.

Wie löse ich das Problem am besten mit VBA?

Ich hoffe ihr könnt mir folgen :)

Danke und Gruß
Ben

  

Betrifft: AW: Wenn kein Vorgang -> dann Inhalt löschen von: Daniel
Geschrieben am: 07.10.2014 21:01:49

Hi
schau dir mal Application.Ontime an.
Damit kannst du ein Makro zu einer bestimmten Zeit starten und damit beispielsweise Programmieren, dass die Zelle mit der Eingabe nach 5 sec gelöscht wird, wenn keine neue Eingabe erfolgt.

Gruß Daniel


  

Betrifft: AW: Wenn kein Vorgang -> dann Inhalt löschen von: Ben
Geschrieben am: 08.10.2014 13:22:05

Hallo Daniel,

vielen Dank für deine Antwort.

An Ontime hatte ich auch schon gedacht, leider habe ich dann das Problem, dass wenn sich mehrere Leute hintereinander abscannen, dass dann nach (7 Sekunden) jede 2 Sekunden der Eintrag gleich ausgeblendet wird.

Gibt es eventuell die Möglichkeit, dass zu umgehen? :)


  

Betrifft: AW: Wenn kein Vorgang -> dann Inhalt löschen von: Daniel
Geschrieben am: 08.10.2014 13:59:58

Du kannst einen mit OnTime abgesetzen Markostart wieder zurückrufen mit dem Befehl:

Application.OnTime Startzeit, Makroname, Schedule:=False
dabei muss genau die Startzeit verwendet werden, mit der auch gestartet wurde, dh du musst dir diese Startzeit in einer statischen oder globalen Variablen merken, um sie beim nächstn Makroaufruf wieder verwenden zu können.

bei einer Eingabe muss dann folgender Ablauf sein (schematisch:)
Static Startzeit as Date

'--- Prüfen, ob ein Makro auf ausführung wartet und wen ja, zurückrufen
IF Now < StartZeit Then Application.Ontime StartZeit, Makroname, Schedule:= False

'--- neue Startzeit festlegen
Startzeit = Now + TimeSerial(0, 0, 7)

'--- Marko erneut starten
Application.Ontime Startzeit, Makroname
damit wird, wenn die Eingaben in kürzeren Abständen als 7 sec erfolgen, das Ausblenden immer nur 7 sec nach der letzten Eingabe ausgeführt.

Gruss Daniel


 

Beiträge aus den Excel-Beispielen zum Thema "Wenn kein Vorgang -> dann Inhalt löschen"