Laufzeitfehler bei Datenzählung

subara

Mitglied
Die Schleife läuft solang bis BoolEnd True ist.
In der Variabel strTemp wird immer der Wert vom aktuelle Eintrag (listcounter bei 0 beginnend ) hineingschriben.
Falls es einen Wert hat, geht er weiter bis es keinen mehr hat.
Dann wird die Schleife abgebrochen.
Zum Schluss hat es i der Variabel listcounter eine Zahl, nämlich die Anzahl von den Einträgen im Auswahlfeld.

Leider bekomme ich jedes mal einen Laufzeitfehler '2480': Sie haben für den Verweis auf eine Eigenschaft ein numerisches Argument angegeben, das keiner der Eigenschaftennummern entspricht. die in der Auflistung stehen.

Code:
    'Maschinen zur Kategorie in Tabelle schreiben
    'Die Daten des Listenfeldes müssen in die Tabelle machine_cat geschrieben werden
    BoolEnd = False
    listCounter = 0
    
    Do While BoolEnd = False
        Dim strTemp As String

    
        strTemp = Me!add_cat_machines.ItemData(Me!add_cat_machines.ItemsSelected(listCounter))
    
        If strTemp = Null Then
    
            BoolEnd = True
    
        Else

            listCounter = listCounter + 1
            
        End If
    
    Loop
       
End Sub
 
Zuletzt bearbeitet:
Hallo Subara ,

ich bin zwar kein Profi aber


strTemp = listCounter
erscheint mir unlogisch da listcounter eine Zahl ist und strTemp ein string

Gruß Ingo
 
Was ist denn "add_cat_machines"? Ich vermute einen Logikfehler in dieser Anweisung:

Code:
strTemp = Me!add_cat_machines.ItemData(Me!add_cat_machines.ItemsSelected(listCounter))

Aber ohne näheres vom Programm zu kennen, kann man hier nichts genaues sagen.

subara: Weil am Ende von strTemp listcount gezählt wird.
Dies erscheint mir im Übrigen auch nicht logisch, und ich verstehe diese Aussage auch nicht. strTemp wird ein Wert zugewiesen, wenn dieser nicht Null ist, wird listcount hochgezählt. strTemp und listcount stehen letztlich in keinerlei direktem Zusammenhang.

Es macht ohnehin keinerlei Sinn, die gleiche Variable innerhalb einer Schleife immer neu zu dimensionieren.

ronaldh
 
Es wird der Name und die Beschreibung in zwei verschiedene Felder eingetragen. Dazu gibt es noch ein Listenfeld welches mehrere Maschienen auswählen läst und später angibt zu welchen Maschienen die Kategorie (Name und Beschreibung) gehören.

Hier noch der Codeabschnitt
Code:
'############################### Daten "Neue Kategorie" eintragen ####################################

Private Sub add_category_bt_Click()
    
    'Feldinhalt in Variablen schreiben
    strName = Me!add_category_name
    strDescription = Me!add_category_description
    boolCp = 0
        
    'Verbindung zu Tabelle "categories"
    Dim rst2 As Recordset
    Set rst2 = CurrentDb.OpenRecordset("categories")
    
    'Überprüfung auf leere Felder
    If strName <> "" And strDescription <> "" Then
        
        'Schleife zur Überprüfung ob nicht schon vorhanden
        Do While Not rst2.EOF
        
            If strName = rst2!Name Then
                  
                boolCp = 1
            
            End If
            
            rst2.MoveNext
            
        Loop
        
        'Falls noch nicht vorhanden --> einfügen
        If boolCp = 0 Then
        
            'Daten einfügen
            With rst2
                If .Updatable Then
                    .AddNew
                    !Name = strName
                    !Description = strDescription
                    .Update
                End If
            End With
        
            'Verbindung schliessen
            rst2.Close
        
            MsgBox "Erfolgreich eingetragen!"
            
        Else
        
            MsgBox "Diese Baugruppe/Kategorie ist schon vorhanden!"
        
        End If
    
    'Falls leere Felder, Meldung ausgeben
    Else
    
        MsgBox "Bitte füllen Sie alle Felder aus !"
    
    End If
    
    'Maschinen zur Kategorie in Tabelle schreiben
    'Die Daten des Listenfeldes müssen in die Tabelle machine_cat geschrieben werden
    BoolEnd = False
    listCounter = 0
    
    strTemp = Me!add_cat_machines.ItemData(Me!add_cat_machines.ItemsSelected(listCounter))

    Do While BoolEnd = False
        Dim strTemp As String
    
        If strTemp = Null Then
    
            BoolEnd = True
    
        Else

            listCounter = listCounter + 1
            
        End If
        On Error Resume Next
    Loop
       
End Sub
 
Hi.

Wenn du über alle ausgewählten Elemente der Liste iterieren möchtest, warum nimmst du dann nicht eine entsprechende Schleife?
Visual Basic:
for each item in Me!add_cat_machines.ItemsSelected
  ...
next
Allerdings verstehe ich auch nicht, was du mit der Schleife überhaupt bezwecken willst. Willst du die Anzahl der ausgewählten Elemente herausfinden?

Gruß
 
Zurück