hipfzwirgel
Goto Top

VBA Funktion geht nur einmal - Warum?

Hallo Gemeinde,

in meiner Access-Db habe ich folgende SUB im Endlosformular [Hardwareeingang]:

Private Sub Daten_copy_Click()
On Error GoTo Err_Daten_copy_Click

    
    Dim stLinkCriteria As String
    Dim data As New DataObject
    Dim rn, compname, LieferDate, serialno, scopyString As String
    Dim rs As DAO.Recordset
    
    Set rs = Forms!Hardwareeingang.RecordsetClone
    If Not rs.EOF Then
    rs.MoveFirst
    Do While Not rs.EOF
        scopyString = scopyString & rs!Lieferdatum & ", " & rs!RFQNummer & ", " & rs!Rechnername & ", S/N: " & rs!Seriennummer & vbCrLf  
        rs.MoveNext
    Loop
    rs.Close
    data.settext scopyString
    data.putinclipboard
    End If
    

Exit_Daten_copy_Click:
    Exit Sub

Err_Daten_copy_Click:
    MsgBox Err.Description
    Resume Exit_Daten_copy_Click
End Sub

Diese Sub ist aber nur einmal und auch nur nachdem das Formular neugeöffnet wurde ausführbar.
Eine weitere Sub, gleichen codes (lediglich die ausgabe ist eine andere) wird NICHT ausgeführt nachdem die vorstehende Sub ausgeführt wurde.

hat jemand eine Lösung, das beide Sub's immer bei ButtonClick ausgeführt werden?

Content-ID: 9461927723

Url: https://administrator.de/contentid/9461927723

Ausgedruckt am: 28.09.2024 um 22:09 Uhr

StefanKittel
StefanKittel 26.06.2024 um 13:21:32 Uhr
Goto Top
Zitat von @hipfzwirgel:
Eine weitere Sub, gleichen codes (lediglich die ausgabe ist eine andere) wird NICHT ausgeführt nachdem die vorstehende Sub ausgeführt wurde.
Definiere bitte mal "nicht ausgeführt".
Kommt eine Fehlermeldung wenn Du auf den Button klickst? endet sie mit einer msgbox mit Fehler?, passiert nix?
Mach doch mal einen Breakpoint in Zeile 10 und schaue wo er langläuft.
Stefan
hipfzwirgel
Lösung hipfzwirgel 26.06.2024 aktualisiert um 13:47:13 Uhr
Goto Top
Hallo StefanKittel,

zunächst danke für deine Rückmeldung.

ich habe in der Zwischenzeit die Lösung gefunden:

es ist die Zeile 11 If Not rs.EOF... die bewirkt, dass er nur dann an die erste Stelle springt und den Code ausführt
wenn der Record nicht am Schluss steht. Da er aber einmal komplett durchgegangen ist, steht er ja am Schluss.
Nach entfernen der If-Verzweigung führt er rs.Movefirst und die Schleife immer aus.