Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1740to1744
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

1004 anwendungs- oder objektdefinierter

1004 anwendungs- oder objektdefinierter
02.03.2020 15:06:52
Eric
Hallo zusammen,
bei folgendem Code bekomme ich das Problem, dass (wenn ich eine if-Funktion einfügen möchte) aufgrund der Definition von " lCONST_STARTZEILENNUMMER_DER_TABELLE" den Fehler "1004 anwendungs- oder objektdefinierter fehler".
Kann mir da jemand behilflich sein?
LG Eric

Private Sub LISTE_LADEN_UND_INITIALISIEREN()
Dim lCONST_STARTZEILENNUMMER_DER_TABELLE As Long
Dim lzeile As Long
Dim lZeileMaximum As Long
Dim i As Integer
Dim lspalte As Integer
'Alle TextBoxen leer machen
For i = 1 To iCONST_ANZAHL_EINGABEFELDER
Me.Controls("TextBox" & i) = ""
Next i
ListBox1.Clear
ListBox1.ColumnCount = 4
If ComboBox2 = "2019" Then
lCONST_STARTZEILENNUMMER_DER_TABELLE = 37
End If
ListBox1.ColumnWidths = "0;40;40;40"
If ComboBox2 = "2019" Then
lZeileMaximum = 75 'Benutzer Bereich auslesen
ElseIf ComboBox2 = "2020" Then
lZeileMaximum = 150
End If
For lzeile = lCONST_STARTZEILENNUMMER_DER_TABELLE To lZeileMaximum
Tabelle2.Select
For lspalte = 3 To 500
If InStr(Cells(3, lspalte), ComboBox1.Text)  0 Then
Exit For
End If
lspalte = lspalte + 9
Next lspalte
If IST_ZEILE_LEER(lzeile) = False Then
ListBox1.AddItem lzeile
ListBox1.List(ListBox1.ListCount - 1, 1) = CStr(Tabelle2.Cells(lzeile, lspalte - 1) _
_
.Text)
ListBox1.List(ListBox1.ListCount - 1, 2) = CStr(Tabelle2.Cells(lzeile, lspalte). _
Text)
ListBox1.List(ListBox1.ListCount - 1, 3) = CStr(Tabelle2.Cells(lzeile, lspalte + 1) _
_
.Text)
ListBox1.List(ListBox1.ListCount - 1, 4) = CStr(Tabelle2.Cells(lzeile, lspalte + 2) _
_
.Text)
End If
Next lzeile
End Sub

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 1004 anwendungs- oder objektdefinierter
02.03.2020 15:50:29
Werner
Hallo,
was mich wundert ist das Wörtchen CONST bei Dim lCONST_STARTZEILENNUMMER_DER_TABELLE As Long.
Kann es sein, dass du diese Variable irgendwo anders als Constante deklariert hast?
Es wäre besser, wenn du deine Datei hier mal hochladen würdest.
Gruß Werner
AW: 1004 anwendungs- oder objektdefinierter
02.03.2020 16:26:10
Eric
Hallo,
der Wert wurde ehemals als Kontsant definiert, habe diese Definition jedoch gelöscht.
Die Datei könnte ich erst Morgen früh hochladen, da ich bis dahin nicht mehr am Rechner bin (nur Mobil)
LG Eric
AW: 1004 anwendungs- oder objektdefinierter
02.03.2020 17:19:33
onur
Der Wert einer Konstanten MUSS direkt beim Dimensionieren festgerlegt werden.
z.B.:
Dim lCONST_STARTZEILENNUMMER_DER_TABELLE As Long = 77

Anzeige
AW: 1004 anwendungs- oder objektdefinierter
02.03.2020 17:41:16
onur
Der Wert einer Konstanten MUSS direkt beim Dimensionieren festgerlegt werden.
z.B.:
Dim lCONST_STARTZEILENNUMMER_DER_TABELLE As Long = 77

AW: 1004 anwendungs- oder objektdefinierter
03.03.2020 07:17:33
Eric
Guten Morgen,
ja, genau so war es auch anfangs.
Ich möchte nur diesen Wert an einer IF-Funktion anknüpfen, da dieser Wert abhängig von einer ComboBox sein soll.
Mit dem 1ZeileMaximum klappt das ja auch.
LG Eric
AW: 1004 anwendungs- oder objektdefinierter
03.03.2020 08:42:40
onur
Dieser Wert kann nicht verändert werden, wenn die Variable eine Konstante ist - daher evtl der Name „Konstante“ !
AW: 1004 anwendungs- oder objektdefinierter
04.03.2020 13:12:09
Tim
Jetzt habe ich eine neue Variable definiert (fett geschrieben), der Fehler ist trotzdem noch da:
Private Sub LISTE_LADEN_UND_INITIALISIEREN()
Dim lzeile As Long
   Dim lZeileMinimum As Long
Dim lZeileMaximum As Long
Dim i As Integer
Dim lspalte As Integer
'Alle TextBoxen leer machen
For i = 1 To iCONST_ANZAHL_EINGABEFELDER
Me.Controls("TextBox" & i) = ""
Next i
ListBox1.Clear 'Liste leeren
'4 Spalten einrichten
'Spalte 1: Zeilennummer des Datensatzes
'Spalte 2: Name (Spalte A)
'Spalte 3: Telefon (Spalte B)
'Spalte 4: E-Mail (Spalte C)
ListBox1.ColumnCount = 4
'Spaltenbreiten der Liste anpassen (0=ausblenden, nichts=automatisch)
'";;;"
ListBox1.ColumnWidths = "0;40;40;40"
'Feste Breiten: ListBox1.ColumnWidths = "0;100;100;100"
'Um eine Schleife für alle Datensätze zu erhalten, benötigen wir die letzte verwendete  _
Zeile
If ComboBox2 = "2019" Then
     lZeileMinimum = 39
lZeileMaximum = 75 'Benutzer Bereich auslesen
ElseIf ComboBox2 = "2020" Then
     lZeileMinimum = 76
lZeileMaximum = 150
End If
For lzeile = lZeileMinimum To lZeileMaximum
Tabelle2.Select
For lspalte = 3 To 500
If InStr(Cells(3, lspalte), ComboBox1.Text)  0 Then
Exit For
End If
lspalte = lspalte + 8
Next lspalte
'Nur wenn die Zeile benutzt / nicht leer ist, zeigen wir etwas an:
If IST_ZEILE_LEER(lzeile) = False Then
'Spalte 1 der Liste mit der Zeilennummer füllen
ListBox1.AddItem lzeile
'Spalten 2 bis 4 der Liste füllen
ListBox1.List(ListBox1.ListCount - 1, 1) = CStr(Tabelle2.Cells(lzeile, lspalte - 1) _
_
_
.Text)
ListBox1.List(ListBox1.ListCount - 1, 2) = CStr(Tabelle2.Cells(lzeile, lspalte). _
Text)
ListBox1.List(ListBox1.ListCount - 1, 3) = CStr(Tabelle2.Cells(lzeile, lspalte + 1) _
_
_
.Text)
ListBox1.List(ListBox1.ListCount - 1, 4) = CStr(Tabelle2.Cells(lzeile, lspalte + 2) _
_
_
.Text)
End If
Next lzeile
End Sub

Anzeige
AW: 1004 anwendungs- oder objektdefinierter
04.03.2020 14:22:10
Tim
AW: 1004 anwendungs- oder objektdefinierter
04.03.2020 16:07:34
Mullit
Hallo,
die Variablen lZeileMinimum u. lZeileMaximum werden bei Dir in einer If-Anw. beding.-abhängig gefüllt, sind die nicht erfüllt, bleiben diese leer und die Laufvariable lzeile der Schleife steigt bei dem Wert 0 ein, da es diesen Zellindex im Cells()-Objekt nicht gibt, würde das den Fehler erzeugen...
Genau kann man das aber nur sagen, wenn Du mal kurz eine Bsp.-mappe mit dem Prob. hochlädst...
Gruß, Mullit
Excel Version?
05.03.2020 14:08:46
Tim
Ich habe gestern mal die Frage nooch in einem anderen Forum rein gestellt (https://www.clever-excel-forum.de/Thread-VBA-1004-anwendungs-oder-objektdefinierter-Fehler?page=2). Da wird mir gesagt, dass es an meiner Excel-version liegen könnte... stimmt das?
Dort ist übrigens auch die Datei von mir hochgeladen (Hierfür ist sie zu groß)
LG
Anzeige
AW: Excel Version?
05.03.2020 14:26:51
onur
Wohl kaum.
Aber wie Mullit bereits schrieb:
"Genau kann man das aber nur sagen, wenn Du mal kurz eine Bsp.-mappe mit dem Prob. hochlädst."
Du verrätst ja nicht mal, wo genau der Fehler komt.
AW: Excel Version?
05.03.2020 15:13:58
Tim
Habe doch gerade geschrieben, dass in dem anderen Forum die Datei hochgeladen ist, weil sie für hier zu groß ist...^^
Bei mir kommt der Fehler direkt, wenn ich die UserForm3 Starte. Aber mir wird keine Stelle angezeigt :(
AW: Excel Version?
05.03.2020 16:31:12
onur
Du startest Userform3 und UserForm_Initialize ruft LISTE_LADEN_UND_INITIALISIEREN auf.
Dieser wiederum verändert mit
Me.ComboBox1.Value = MonthName(Month(Date))
und
Me.ComboBox2.Value = Format(Date, "YYYY")
ComboBox1 und ComboBox2.
Da aber in den Change-Events von ComboBox1 und ComboBox2 steht
Call LISTE_LADEN_UND_INITIALISIEREN
ruft sich LISTE_LADEN_UND_INITIALISIEREN selbst noch 2x auf. Warum ?
Bei
If ComboBox2 = "2019" Then
lZeileMaximum = 75 'Benutzer Bereich auslesen
ElseIf ComboBox2 = "2020" Then
lZeileMaximum = 150
End If

trifft weder das Eine noch das Andere zu, woher auch? Combobox2 ist ja zwar gefüllt, aber es ist noch gar nix ausgewählt - jedenfalls nicht beim ersten Durchlauf von den Dreien.
Also wird lZeileMaximum nicht gesetzt und Somit die Schleife nicht durchlaufen.
Das sind nur ein Paar der Ungereimtheiten, die mir aufgefakllen sind.
Du solltest dir mal "strukturiertes Programmieren" und wesentlich kürzere Sub- und Variablennamen angewöhnen, es würde die Lesbarkeit enorm erleichtern.
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige