Office: Do...Loop mit Tastatur abbrechen

Helfe beim Thema Do...Loop mit Tastatur abbrechen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hi Ich habe ein Button, mit dem ich beim Click-Ereigniss eine Do...Loop-Schleife auslöse. Ich möchte nun während die Schleife läuft, die Möglichkeit... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von OskiH, 2. Februar 2003.

  1. Do...Loop mit Tastatur abbrechen


    Hi

    Ich habe ein Button, mit dem ich beim Click-Ereigniss eine Do...Loop-Schleife auslöse. Ich möchte nun während die Schleife läuft, die Möglichkeit haben diese abzubrechen, am Besten mit der Tastaturtaste "Esc". Ist das möglich und wenn ja, welchen Code muss ich dafür verwenden?

    Oski

    :)
     
  2. Hallo,

    definiere eine Public-Variable (gleich unter den Optionszeilen ganz oben), mit der Du die Schleife frei gibst. Die Formulareigenschaft "Tastenvorschau" stellst Du auf Ja. Dann kannst Du im Formularereignis "Bei Taste Ab" auf die ESC-Taste abfragen, die Variable setzen und die Schleife somit abbrechen. Wichtig ist, das Du einen DoEvents-Befehl in der Schleife hast, damit das System die Möglichkeit bekommt, Ereignisse überhaupt zu verarbeiten.

    Das Ganze könnte dann ungefähr so aussehen:

    Code:
     
  3. Hallo Oski,

    versuche mal folgendes
     
  4. Do...Loop mit Tastatur abbrechen

    ... oder halt die Taste Untbr auf der Tastatur drücken. (Strg+Pause) *biggrin.gif*
     
  5. \@ Mario

    Hi

    Ich habe deinen Code ausprobiert und es funkt. Ich kann die Schleife stoppen, jedoch möchte ich nun nach dem Stoppen an einem anderen Punkt weiterfahren. Genauer gesagt heisst dass, ich möchte die ganze Prozedur, die ich durch den Button ausgelöst habe verlassen, aber wie?

    Oski
     
  6. Hallo Oski,

    eine Prozedur verläßt du mit

    Code:
     
    Aquarii, 4. Februar 2003
    #6
  7. \@ Nouba

    Hi

    Bin ein VBA-Anfänger, jedoch möchte ich deinen Code gerne ausprobieren. Habe jedoch keinen blassen Schimmer was er bedeutet und wo dieser hingehört. Könntest du mir erkären wo der Code eingesezt werden soll?

    Oski

    Oski
     
  8. Do...Loop mit Tastatur abbrechen

    \@ Aquarii

    Hi

    Ist mir klar das mit Exit Sub.

    Ich habe es anstatt mit Do While nur mit Do versucht und dann eine If...then...Else....Schleife eingebaut und wenn blnSchleife = False Then Exit Sub. Das hat nicht gefunkt weil die Schlaufe nicht mehr enden wollte.

    Also wo kommt den dieses Exit Sub hin?

    Oski
     
  9. Hallo OskiH,

    die ersten drei Zeilen von Nouba kommen in den Deklarationsteils des Moduls, also in den Kopfbereich unterhalb von

    Option Compare Database
    Option Explicit


    Ab der Zeile

    Private Sub cmdLoop_Click()

    beginnt die Prozedur, wobei hier das Ereignis bei Klick einer Befehlsschaltfläche mit dem Namen cmdButton Voraussetzung ist.

    Die solltest du dann entsprechend Deiner Bezeichnung anpassen.
     
    Aquarii, 4. Februar 2003
    #9
  10. Hallo OskiH,

    Dann poste bitte mal hier Deinen Code, dann wird es vielleicht klarer...
     
    Aquarii, 4. Februar 2003
    #10
  11. Hallo Oski,

    Marios Do Loop-Schleife sollte IMO verlassen werden, wenn blnSchleife auf False gesetzt wird. Vermutlich muß KeyPreview der Form in den Eigenschaften auf True gesetzt werden.

    Mein Kode kann so in ein Formmodul übernommen werden. cmdLoop steht für den Namen einer Schaltfläche. Der Kode wird beim Click Event dieser Schaltfläche ausgeführt.

    &H1B (hexadezimal) = 27

    GetKeyboardState fragt den Tastaturstatus ab, wobei im Array das entsprechende Bit gesetzt wird. Wenn Escape gedrückt wird, ist das Bit gesetzt, was mit And 1 abgefragt wird. In VBA gibt es kein Bit-Array, deswegen wird hier ein Byte-Array verwendet.

    1 = True (Wahr)
    0 = False (Falsch)

    1 And 1 = 1
    1 And 0 = 0
    0 And 0 = 0

    1 Or 1 = 1
    1 Or 0 = 1
    0 Or 0 = 0

    mit Not läßt sich die ganze Logik umkehren.

    Statt arrTasten(VK_ESCAPE) = arrTasten(VK_ESCAPE) And Not 1 könnte also auch arrTasten(VK_ESCAPE) = 0 verwendet werden, um das Bit im Array zurückzusetzen. Ich finde aber die andere Schreibform verständlicher.

    SetKeyboardState verrichtet das Zurücksetzen. Anschließend wird noch etwas in die Statuszeile geschrieben, damit man sieht, dass die Schleife abgebrochen wurde. Mit Exit Do wird die Schleife verlassen.

    Auf diese Art und Weise können auch Tasten des Keypads abgefragt werden.

    Ich hoffe, mich einigermaßen verständlich ausgedrückt zu haben.
     
  12. Hi

    Hier mein Code, den ich anhalten und verlassen möchte. Naja, aller Anfang ist schwer!

    Code:
    Oski
     
  13. Do...Loop mit Tastatur abbrechen

    \@Nouba

    Hi, ich habe deinen Code eingesetzt und ausprobiert. Wenn ich nun den Druckauftrag auslösen wollte wurde das Formular sofort geschlossen. Sei mir nicht böse aber dein Code übersteigt mein Können bei weitem. Bei Mattes Code kann ich die Abläufe so schlecht und recht nachvollziehen und deshalb möchte ich seine Version verwirklichen, wenn dies möglich ist.
    Dennoch vielen Dank für deine Erklärungen

    Oski
     
  14. Hallo Oski,

    ich vermisse die Abbruchbedingung mit Esc in Deinem Code.
     
    Aquarii, 4. Februar 2003
    #14
  15. \@Aquarii

    Ist so, weil ich den ganzen Code von Mattes rausgelöscht habe. Ich wollte mich nicht blamieren(wenn das nicht schon geschehen ist *biggrin.gif* ) weil ich den Code vollkommen falsch eingesetzt habe.

    Oski
     
Thema:

Do...Loop mit Tastatur abbrechen

Die Seite wird geladen...
  1. Do...Loop mit Tastatur abbrechen - Similar Threads - Loop Tastatur abbrechen

  2. Stundenzettel, VBA, MoveNext funktioniert nicht

    in Microsoft Access Hilfe
    Stundenzettel, VBA, MoveNext funktioniert nicht: Hallo, ich habe folgendes Problem und bin um jeden Denkanstoß sehr dankbar! Tabelle tblLOG: Daten einer Stechuhr; Datum, Uhrzeit, Mitarbeiter Tabelle tblKalender: alle Kalendertage bis zum Jahr...
  3. Bestimmte Daten zwischen innerhalb eines Datumsbereichs einer Tabelle Anfügen

    in Microsoft Access Hilfe
    Bestimmte Daten zwischen innerhalb eines Datumsbereichs einer Tabelle Anfügen: Hallo, ich habe per Google und Foren SuFu leider nichts passendes finden können, wage aber zu bezweifeln, dass Access da an seine Grenzen kommt, da es eigentlich recht banal ist. Ich habe eine...
  4. VBA Loop : Werte suchen und löschen

    in Microsoft Excel Hilfe
    VBA Loop : Werte suchen und löschen: Hallo zusammen, ich habe folgende Ausgangslage: Im Tabellenblatt Auswahl sollen Artikel eingegeben werden und via Formel wird der zugehörige Lagerplatz ausgegeben (funktioniert soweit), sodass...
  5. Hilfe! Loop ohne Ende ...

    in Microsoft Excel Hilfe
    Hilfe! Loop ohne Ende ...: Sub FindeProd_Zeilen() Dim c As Range Dim firstAddress As String With Worksheets("Terminverschiebungen").Columns(Spalte_Produktion) Set c =...
  6. Loop / Code soll mehrere Tabellen durchlaufen

    in Microsoft Excel Hilfe
    Loop / Code soll mehrere Tabellen durchlaufen: Hallo Zusammen Ich wende mich erneut mit einer VBA-Problemstellung an euch. Und zwar habe ich in einer Datei verschiedene Sheets, welche in ihrer „Art“ folgendermassen aufgeteilt und vorhanden...
  7. Bereiche kopieren/einfügen und mittels Loop "automatisieren"

    in Microsoft Excel Hilfe
    Bereiche kopieren/einfügen und mittels Loop "automatisieren": Hallo liebes MS Office Forum, da ich noch ein VBA Anfänger bin bräuchte ich bitte eure Hilfe *Smilie Zu meinem Problem: Ich möchte im Arbeitsblatt 1 einen definierten Bereich kopieren und in...
  8. Do While Loop Schleife

    in Microsoft Access Hilfe
    Do While Loop Schleife: Hallo zusammen, ich brauche Unterstützung bei der Entwicklung einer Schleife. In Access habe ich eine Datenbank welche Trainingspläne fürs Schwimmen speichert. Nun soll automatisch ein neuer...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden