Laufzeitfehler 1004 bei Schleifendurchlauf

  • Excel

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von lieschen.

    Laufzeitfehler 1004 bei Schleifendurchlauf

    hallo,

    ich habe auch Probleme mit den Schleifen. Die Do Loop Schleife geht nicht und mit If hatte ich Probleme.

    hier mein code:



    Quellcode

    1. Private Sub CommandButton1_Click()
    2. Dim wks1 As Worksheet
    3. Dim wks2 As Worksheet
    4. Set wks1 = ThisWorkbook.Worksheets("Tabelle1")
    5. Set wks2 = ThisWorkbook.Worksheets("Tabelle" & wks1.Range("B1") + 1)
    6. Dim fachlehereranzahl, c As Integer
    7. Dim a As String
    8. fachlehereranzahl = 0
    9. c = 0
    10. Do While wks2.Range(Chr(83 + c) & "2") <> ""
    11. a = wks2.Range(Chr(83 + c) & "2").Value
    12. If a = wks2.Range("C6").Value Then
    13. MsgBox ("Fachlehrer als Aufsicht eingetragen")
    14. End If
    15. c = c + 1
    16. Loop
    17. fachlehreranzahl = c
    18. MsgBox (fachlehreranzahl)
    19. End Sub


    Ich will einfach aus einer Liste mit Werten die
    in der 2. Zeile stehen gucken, ob diese Werte aus der Liste nochmal in
    meinem Worksheet vorkommen.


    Wenn das der Fall ist wird ne MsgBox ausgegeben.


    markiert wird jetzt die Zeile mit meinem Do while und es kommt die Fehlermeldung:


    Laufzeitfehler 1004


    Die methode range für das objekt worksheet ist fehlgeschlagen


    wäre echt super wenn mir jmd helfen könnte
    Die Zeile 20 müsste eigentlich so heißen:

    Visual Basic-Quellcode

    1. Set wks2 = ThisWorkbook.Worksheets("Tabelle" & wks1.Range("B1").value + 1)


    PS. Mach mal beim nächsten Code die tausenden Leerzeilen raus. Ggf vor dem Posten mal die Vorschaufunktion verwenden.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    ne, daran liegts nich.
    der code funktioniert auch wenn ich das auf das worksheet 1 anwende

    was auch komisch ist, er geht in meine Schleife rein, also wenn die if Bedingung zutrifft, dann gibt er mir die msgbox aus. Aber der fehler kommt halt dann

    ja, sry, hab ja schon bearbeitet^^
    Ich habe mal den Code ausprobiert

    Visual Basic-Quellcode

    1. Private Sub CommandButton1_Click()
    2. Dim wks1 As Worksheet
    3. Dim wks2 As Worksheet
    4. Set wks1 = ThisWorkbook.Worksheets("Tabelle1")
    5. Set wks2 = ThisWorkbook.Worksheets("Tabelle" & wks1.Range("B1").Value + 1)
    6. Dim fachlehreranzahl As Integer, c As Integer
    7. Dim a As String
    8. fachlehreranzahl = 0
    9. c = 0
    10. Do While wks2.Range(Chr(83 + c) & "2").Value <> ""
    11. a = wks2.Range(Chr(83 + c) & "2").Value
    12. If a = wks2.Range("C6").Value Then
    13. MsgBox ("Fachlehrer als Aufsicht eingetragen")
    14. End If
    15. c = c + 1
    16. Loop
    17. fachlehreranzahl = c
    18. MsgBox (fachlehreranzahl)
    19. End Sub


    Dieser sollte funktionieren
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    ne, funktioniert nich. hab genau den code ins programm kopiert.
    haste den code auch nich auf dem ersten tabellenblatt sondern dem 2. ausprobiert? also dass in der Zelle B1 auch ne Zahl stand, weil wie gesagt, auf dem ersten tabellenblatt geht er, aber nicht auf dem 2.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „lieschen“ ()

    Oh! Wo fangen wir denn dann an?

    OK!



    Öffne deine Datei.
    Wähle dann Extras - Makros - Visual Basic Editor.
    Dann Einfügen - Modul.
    Kopiere den Code da hinein.

    Visual Basic-Quellcode

    1. Private Sub DatenEintragen()
    2. Dim wks1 As Worksheet
    3. Dim wks2 As Worksheet
    4. Set wks1 = ThisWorkbook.Worksheets("Tabelle1")
    5. Set wks2 = ThisWorkbook.Worksheets("Tabelle" & wks1.Range("B1").Value + 1)
    6. Dim fachlehreranzahl As Integer, c As Integer
    7. Dim a As String
    8. fachlehreranzahl = 0
    9. c = 0
    10. Do While wks2.Range(Chr(83 + c) & "2").Value <> ""
    11. a = wks2.Range(Chr(83 + c) & "2").Value
    12. If a = wks2.Range("C6").Value Then
    13. MsgBox ("Fachlehrer als Aufsicht eingetragen")
    14. End If
    15. c = c + 1
    16. Loop
    17. fachlehreranzahl = c
    18. MsgBox (fachlehreranzahl)
    19. End Sub


    Dann mal nur mit der F8-Taste den Code durcklaufen. (Wichtig beim Start muss der Cursor im Code stehen.)

    Später kannst Du aus Excel heraus die Prozedur über Extras-Makros-Makros DatenEintragen Ausführen starten oder auch der Schaltfläche den Code zuweisen.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).