Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
972to976
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
972to976
972to976
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

listbox wird nicht immer mit array gefüllt

listbox wird nicht immer mit array gefüllt
05.05.2008 20:31:59
sascha
Hallo und guten Abend,
ich habe ein Problem beim befüllen einer Listbox.
Ich habe eine Routine geschrieben, die mittels Button- oder Listbox-Klick aufgerufen werden kann.
Wenn ich die Routine mit diesem Button-Klick aufrufe funktioniert das einwandfrei:

Private Sub CommandButton5_Click()
Anfang.Caption = DateValue(Anfang.Caption) + 1
Label8.Caption = Format(Anfang.Caption, "DDDD")
call listeaktuell
End Sub


Nach einem Aufruf durch diesen Listbox-klick (in die Listbox, die neu aufgebaut werden soll) wird die Listbox jedoch nicht wieder mit daten gefüllt:


abox = Termine.Kunden.List(Termine.Kunden.ListIndex, 0)
Sheets(abox).Range("H4") = DateValue(Datum.Caption)
Call listeaktuell


Die Routine die Aufgerufen wird, wird vollständig abgearbeitet, bis auf das neue befüllen der Listbox. Deshalb habe ich diesen Teil weggelassen.
Bis zum .Clear läuft es und die Listbox wird gelöscht. Die neuen daten (Terminliste2) werden dann aber nicht eingetragen.


terminliste2 = Sheets("Kundendetails").Range("FA1:FK" & boxü) '.Value
With Termine.Kunden
.Clear
.ColumnCount = 10            '2 = Anzahl Spalten
.ColumnWidths = "0;0;4cm;3cm;3cm;2,5cm;1cm;3cm;1,8cm;1,8cm"
.List() = terminliste2
End With


Es scheint so, als wäre Terminliste2 leer, dies ist aber nicht der Fall, da im zugewiesenen Bereich daten stehen und beim Button-Klick-Aufruf klappt das ja auch.
Hat jemand dafür eine Erklärung? Liegt es daran, das die Prozedur durch ein Klick in die selbe Listbox aufgerufen wird, die befüllt werden soll?
Ich wäre für jeden Hinweis dankbar.
Grüße
Sascha

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehlersuche ohne Bespieldatei...
05.05.2008 21:02:21
Daniel
... ist meist nicht zielführend, da der Fehler nicht immer da steckt, wo du ihn vermutest.
Gruß, Daniel

AW: Fehlersuche ohne Bespieldatei...
07.05.2008 16:49:41
sascha
Hallo,
entschuldige meine späte Rückmeldung.
Ich hatte gehofft, daß dieses Phänomen schonmal woanders aufgetaucht war und daher irgendwelche Erfahrungen bekannt sind.
Die Datei ist gut 30MB groß und enthält u.a. Firmeninterene und Kundendaten. Deshalb habe ich sie nicht beigefügt, sondern es auf die Teile beschränkt, die mir am wahrscheinlichsten schienen.
Es kann ja eigentlich nur in dieser Routine Liegen:

Public Sub listeaktuell()
Application.ScreenUpdating = False
'On Error Resume Next
Sheets("Stammdaten").Range("G7") = 1
Dim Terminliste(99999, 10) As Variant  'String 'Spalte,linie
Dim terminliste2
boxü = 0 '=liniennummer in der Boxübersicht
kdl = 2
hbn = 0
kv = 0 ' Prüft ob Kunde in Liste eingetragen wurde
ldat = DateValue(Termine.Anfang.Caption)
box = 0
Dim i As Integer
'Schleife für Boxen
With Sheets("Kundendetails")
.Range("FA:FJ") = ""
.Range("FA:FJ").NumberFormat = "General"
.Range("FI:FI").NumberFormat = "DD.MM.YY"
For s = 1 To Sheets.Count
If InStr(Sheets(s).Name, " Box ") > 0 Then
boxnam = Sheets(s).Name
'datok = 0 'Prüfung ob Box im Zeitraum geliefert wird
If Sheets(s).Range("H8") = False Then 'ist keine Bestellung
If Sheets(s).Range("H9")  True Then ' ist keine Stammbox
If Sheets(s).Range("H2") = 1 Then ' Box ist aktiv
'Kundennummer auslesen    kdl
kdl = Kdnrausboxnr(Sheets(s).Name)
i = 2
Do
'Linie mit Kundeninformationen finden   i
If CDec(Sheets("Kundendetails").Range("A" & i)) = CDec(kdl) Then Exit Do
i = i + 1
If Sheets("kundendetails").Range("A" & i) = "" Then MsgBox ("Kunde wurde nicht gefunden!"):  _
Exit Sub
Loop
'Application.ScreenUpdating = True
'    MsgBox (i & " i")
'    MsgBox (Sheets("Kundendetails").Cells(i, 3) & "   " & Sheets("Kundendetails").Cells(i, 4))
Lieferinformation(kdl, 1) = Sheets("kundendetails").Range("l" & i)
Lieferinformation(kdl, 2) = Sheets("kundendetails").Range("m" & i)
Lieferinformation(kdl, 3) = Sheets("kundendetails").Range("v" & i)
'MsgBox "Datum prüfen box " & Sheets(s).Name
datcount = 0
Do
ldat = DateValue(DateValue(Sheets(s).Range("H4")) + (Sheets(s).Range("H5") *  _
datcount))
If ldat  startdat Then
.Range("FA" & linie & ":FK" & linie).Insert Shift:=xlDown
boxü = boxü + 1
linie = linie + 1
If DateValue(.Range("FI" & linie)) >= DateValue(datummontag) Then
.Range("FA" & linie & ":FK" & linie).Insert Shift:=xlDown
boxü = boxü + 1
linie = linie + 1
.Range("FC" & linie - 1) = Sont
.Range("FD" & linie - 1) = Sont
.Range("FE" & linie - 1) = Sont
.Range("FF" & linie - 1) = Sont
.Range("FG" & linie - 1) = Sont
.Range("FH" & linie - 1) = Sont
.Range("FI" & linie - 1) = Sont
.Range("FJ" & linie - 1) = Sont
datummontag = DateValue(datummontag) + 7
.Range("FA" & linie & ":FK" & linie).Insert Shift:=xlDown
boxü = boxü + 1
linie = linie + 1
End If
startdat = DateValue(.Range("FI" & linie))
End If
linie = linie + 1
Loop
Application.ScreenUpdating = True
terminliste2 = Sheets("Kundendetails").Range("FA1:FK" & boxü) '.Value
End With
With Termine.Kunden
.Clear
.ColumnCount = 10            '2 = Anzahl Spalten
.ColumnWidths = "0;0;4cm;3cm;3cm;2,5cm;1cm;3cm;1,8cm;1,8cm"
.List() = terminliste2
MsgBox (terminliste2(1, 1))
End With
Sheets("Start").Activate
End Sub


Wobei das bis zum
With Termine.Kunden
.Clear
auch richtig durchläuft. Nur der teil:
.List() = terminliste2
wird anscheinend nicht immer ausgeführt.
Die Routine wird, wie gesagt, entweder durch verschiedene Button-Klicks oder eben den Listbox_Klick aufgerufen und nur beim Listbox_Klick klappt es nicht.
Gruß, Sascha

Anzeige
AW: Fehlersuche ohne Bespieldatei...
07.05.2008 21:00:00
Daniel
Hi
sorry, aber ich glaube kaum, daß du hier jemand findest, der das theoretisch durchtestet.
da brauchst du dann doch einen Experten vor Ort.
außderdem sind viele Variablen nicht dimenisoniert.
sind das globlale Variablen oder arbeitest du nicht mit OPTION EXPLICIT ?
stimmen die Variablenwerte von boxü und terminliste2, dh hat terminliste2 überhaupt die richtigen Werte wenn sie der Listbox zugewiesen wird?
stetze an der entsprechenden stelle einfach mal nen Haltepunkt und checke vor Übergabe an die Listbox die Variablenwerte.
Gruß, Daniel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige