Anzeige
Archiv - Navigation
1224to1228
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
Listbox "Format/Größe" spring ständig um
KLE
Hallo,
ich habe in einem Arbeitsblatt eine Listbox, welche auf einer Suchfunktion basierend Daten aus einem Datenblatt anzeigt. Um dem Formular optisch und der Lesbarkeit für den User gerecht zu werden, habe ich die Listbox eine bestimmte größe vergeben. Doch wenn die Prozedur des "Inhalte einlesens" abläuft, entscheidet sich die Listbox für ein eigenes Format/Größe?!?
D.h. mit jedem Aufruf der Prozedur sieht das Listfeld am Ende unterschiedlich in ihrer Größe aus. Meist immer kleiner werdend in der Breite und Höhe...
Woran kann es liegen und was kann man dagegen tun?
Hier mein Code...
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++'
' Suchtext-Eingabe führt unmittelbar zur Listenaktualisierung
Private Sub objTBSuche_Change()
Datensatzsuche
End Sub
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++'
Private Sub Datensatzsuche()
Dim sText As String
Dim ArrayData
Application.ScreenUpdating = False
sText = objTBSuche.Text
' Listenfeld formatieren und füllen
With objLBDaten
.ListFillRange = ""
.ColumnCount = 5
' Listenbereich übergeben (Suchfunktionsergebnis)
ArrayData = fncListe(sText)
' Wenn etwas gefunden wird - Liste anpassen, sonst leeren
If IsArray(ArrayData) Then
arrKontakte = arrListe
.List = fncListe(sText)
Else
.Clear
End If
' Listbox sortieren (Name - Spalte3)
'Listbox an Array übergeben
On Error GoTo Ende
ReDim arr(1 To objLBDaten.ListCount, 1 To objLBDaten.ColumnCount)
For i = 1 To objLBDaten.ListCount
For j = 1 To 5 ' alle 5 Spalten
arr(i, j) = objLBDaten.List(i - 1, j - 1)
Next j
Next i
' Sortieren Spalte 3
ArrK = Array(2)
'Sortieren
Call prcSort(ArrK, arr)
' Liste zurück geben
objLBDaten.List() = arr
' Listbox-Größe und Position anpassen
.ColumnWidths = "1 Pt;114,95 Pt;90 Pt;90 Pt;170 Pt"
.Height = 834
.Width = 485.25
.Top = 90
.Left = 966.75
End With
Ende:
' Info der Anzahl gefundener Datensätze
objLCount.Caption = objLBDaten.ListCount & " Datesnätze wurden gefunden."
Application.ScreenUpdating = True
End Sub
Function fncListe(Optional sText As String)
Dim oDaten1, oDaten2, oDaten3, oDaten4 As Object
Dim arrListe, NewArray()
Dim a As Long
With Worksheets("DB-Contacts")
a = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
If a = 1 Then
fncListe = arrListe
Exit Function
Else
Set oDaten1 = CreateObject("Scripting.dictionary")
Set oDaten2 = CreateObject("Scripting.dictionary")
Set oDaten3 = CreateObject("Scripting.dictionary")
Set oDaten4 = CreateObject("Scripting.dictionary")
arrListe = Worksheets("Daten").Range("A8:AV" & a)
For a = 1 To UBound(arrListe)
If InStr(LCase(arrListe(a, 48)), LCase(sText)) > 0 Then
oDaten1(arrListe(a, 1)) = arrListe(a, 6)
oDaten2(arrListe(a, 1)) = arrListe(a, 5)
oDaten3(arrListe(a, 1)) = arrListe(a, 9)
oDaten4(arrListe(a, 1)) = arrListe(a, 14)
End If
Next
If oDaten1.Count > 0 Then
arrListe = oDaten1.Keys
ReDim NewArray(UBound(arrListe), 4)
For a = LBound(arrListe) To UBound(arrListe)
NewArray(a, 0) = arrListe(a)
NewArray(a, 1) = oDaten1(arrListe(a))
NewArray(a, 2) = oDaten2(arrListe(a))
NewArray(a, 3) = oDaten3(arrListe(a))
NewArray(a, 4) = oDaten4(arrListe(a))
Next
fncListe = NewArray
End If
End If
End Function Vielen Dank für Eure Hilfe bereits an dieser Stelle ;o)
Gruß
KLE

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Listbox "Format/Größe" spring ständig um
04.08.2011 07:09:14
Oberschlumpf
Moin
Bin "begeistert".
Ne Menge an Code, und ich "dürfte" ne neue Datei erstellen, den Code einfügen + so lange anpassen, bis zumindest das Grundsätzliche funktioniert.
Wieso zeigst du uns denn nicht die Datei mit Code + Bsp-Daten, wenn nötig?
Ciao
Thorsten
AW: Musterdatei lade ich später hier hoch...
04.08.2011 10:05:26
KLE
Hallo Thorsten,
...vielen Dank für Deine Antwort. OK, ich dachte - der eine oder andere würde gegebenenfalls anhand des Codes vielleicht schon einen Fehler entdecken und da die Datei ziemlich komplex und mit Firmeninternen Daten gefüllt ist...hatte ich Sie nicht mit Hochgeladen.
Werde eine Muster-Datei erstellen und diese dann hier hochladen.
Vielen Dank und Gruß
Kay
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige