Fehler Funktion erwartet obwohl es vorher lief

  • Excel

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Tuereintreter.

    Fehler Funktion erwartet obwohl es vorher lief

    Hi Leute,

    meine Suchroutine will nicht mehr obwohl sie vorher lief. Ich poste mal den Quellcode des Moduls:
    Die Stelle ist Zeile 63

    Visual Basic-Quellcode

    1. Option Explicit
    2. Public frm_Call As String
    3. Public tblKunden As Worksheet
    4. Public tblZulieferer As Worksheet
    5. Public tblPersonal As Worksheet
    6. Sub Kunden()
    7. frm_Call = "Kunden"
    8. frm_Kunden.Show
    9. End Sub
    10. Sub Zulieferer()
    11. frm_Call = "Zulieferer"
    12. frm_Kunden.Show
    13. End Sub
    14. Sub Personal()
    15. frm_Call = "Personal"
    16. frm_Kunden.Show
    17. End Sub
    18. Sub Suchen()
    19. Dim lng As Long
    20. Dim i As Integer
    21. Application.ScreenUpdating = False
    22. With frm_Kunden
    23. .ListBox1.Clear
    24. Sheets(frm_Call).Activate
    25. i = 0
    26. For lng = 3 To ActiveSheet.UsedRange.Rows.Count
    27. If InStr(LCase(Cells(lng, 1).Value), LCase(.TextBox1.Value)) > 0 Then
    28. .ListBox1.AddItem Cells(lng, 1).Value
    29. .ListBox1.Column(1, i) = Cells(lng, 2).Value
    30. .ListBox1.Column(2, i) = Cells(lng, 3).Value
    31. .ListBox1.Column(3, i) = Cells(lng, 4).Value
    32. .ListBox1.Column(4, i) = Cells(lng, 5).Value
    33. .ListBox1.Column(5, i) = Cells(lng, 6).Value
    34. .ListBox1.Column(6, i) = Cells(lng, 8).Value
    35. .ListBox1.Column(7, i) = Cells(lng, 9).Value
    36. .ListBox1.Column(8, i) = Cells(lng, 10).Value
    37. .ListBox1.Column(9, i) = Cells(lng, 11).Row
    38. i = i + 1
    39. Else
    40. End If
    41. Next lng
    42. End With
    43. frm_Kunden.Label11.Caption = frm_Kunden.Label1.Caption
    44. frm_Kunden.Label12.Caption = frm_Kunden.Label2.Caption
    45. frm_Kunden.Label13.Caption = frm_Kunden.Label3.Caption
    46. frm_Kunden.Label14.Caption = frm_Kunden.Label4.Caption
    47. frm_Kunden.Label15.Caption = frm_Kunden.Label5.Caption
    48. Application.ScreenUpdating = True
    49. End Sub
    50. Sub FelderLöschen()
    51. Dim tb As Object
    52. With frm_Kunden
    53. For Each tb In .Controls
    54. If TypeName(tb) = "TextBox" Then tb.Text = ""
    55. Next tb
    56. .ComboBox1.Text = ""
    57. End With
    58. End Sub
    59. Sub SucheName()
    60. Dim lng As Long
    61. Dim i As Integer
    62. Application.ScreenUpdating = False
    63. With frm_Kunden
    64. .ListBox1.Clear
    65. Sheets(frm_Call).Activate
    66. i = 0
    67. For lng = 3 To ActiveSheet.UsedRange.Rows.Count
    68. If InStr(LCase(Cells(lng, 2).Value), LCase(.TextBox2.Value)) > 0 Then
    69. .ListBox1.AddItem Cells(lng, 1).Value
    70. .ListBox1.Column(1, i) = Cells(lng, 2).Value
    71. .ListBox1.Column(2, i) = Cells(lng, 3).Value
    72. .ListBox1.Column(3, i) = Cells(lng, 4).Value
    73. .ListBox1.Column(4, i) = Cells(lng, 5).Value
    74. .ListBox1.Column(5, i) = Cells(lng, 6).Value
    75. .ListBox1.Column(6, i) = Cells(lng, 8).Value
    76. .ListBox1.Column(7, i) = Cells(lng, 9).Value
    77. .ListBox1.Column(8, i) = Cells(lng, 10).Value
    78. .ListBox1.Column(9, i) = Cells(lng, 11).Row
    79. i = i + 1
    80. Else
    81. End If
    82. Next lng
    83. End With
    84. Application.ScreenUpdating = True
    85. End Sub


    Ganz nebenbei, wenn ich der ListBox mehr als 9 Spalten geben wollte gab das auch immer einen Fehler. Wenn jemand eine bessere Methode hat als die obige - für Anregungen bin ich dankbar.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Tuereintreter“ ()

    Die Fehlermeldung wäre auch hilfreich.
    Ich sehe den Fehler wie auch peterfido beim Begriff Kunden. Dieser ist aber augenscheinlich nirgendwo deklariert, deshalb der Fehler. Falls es der Tabellenname ist muss natürlich die Tabelle angescprochen werden. Worksheet("Kunden").activate
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    Die Fehlermeldung lautet:
    Fehler beim Kompilieren:
    Function oder Variable erwartet

    Wenn ich nur .Activate schreibe (was für mich kein Sinn ergibt) kommt:
    Fehler beim Kompilieren:
    Methode oder Datenobject nicht gefunden

    Und wenn ich wie bei der Sub Suchen() weiter oben
    worksheet("Kunden"). activate schreibe gibt es keinen Abbruch aber der String aus TextBox2 wird nicht gefunden bzw in die ListBox1 eingetragen.
    Wie gesagt Kunden.Activate hatte mal funktioniert.
    Ich habe mal den geupdated, da ich ja weiter schreibe. So wie die Sub SucheName() jetzt läuft verursacht sie keine Fehlermeldung allerdings auch kein Ergebnis. Die ListBox1 wird noch schön mit Clear gelöscht und das war es auch schon. Das gibt mir Rätsel auf da unter Suche() es genau so beginnt und brauchbare Resultate liefert.