Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1572to1576
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

Problem mit Listbox

Problem mit Listbox
14.08.2017 16:47:58
Peter
Hallo ihr Excelspezialisten,
ich habe wieder ein Problem und bitte um eure Hilfe bei der Lösung.
Ich benutze eine Multipage und fülle diese mittels folgendem Code:
Option Explicit
Public aTmp5() As String ' temporärer Array zur Aufnahme der Daten
Public FundZeile5 As Long ' die Zeile die gesucht/angeklickt wurde
Public Sub UserForm4_anzeigen()
UserForm4.Show
End Sub

Public Sub Array_fuellen5()
Dim lLetzte   As Long     ' letzte belegte Zeile in Spalte A
Dim lZeile    As Long     ' For/Next Zeilen-Zähler
Dim lIndex    As Long     ' der Zeilen-Index im Array
Dim iSpalte   As Integer  ' der Spalten-Index im Array
With Worksheets("Lehrerliste_Löschtabelle")
lLetzte = .Cells(Rows.Count, 1).End(xlUp).Row
For lZeile = 2 To lLetzte
'If Not IsEmpty(Cells(lZeile, 8)) Then ' Spalte H nicht leer?
lIndex = lIndex + 1
'            ReDim Preserve aTmp(1 To 8, 1 To lIndex)
ReDim Preserve aTmp5(1 To 13, 1 To lIndex)
'     um die Formatierungen der Tabellenblatt-Spalten zu übernehmen,     '
'     darf nicht .Value, sondern es muss .Text verwendet werden.         '
'            For iSpalte = 1 To 7
'               aTmp(iSpalte, lIndex) = Cells(lZeile, iSpalte).Text
'               aTmp(8, lIndex) = lZeile
For iSpalte = 1 To 12
aTmp5(iSpalte, lIndex) = Cells(lZeile, iSpalte).Text
aTmp5(13, lIndex) = lZeile
Next iSpalte
'End If
Next lZeile
End With
End Sub
Wenn nun die Tabelle leer ist bis auf die Kopfzeile, dann kommt eine Fehlermeldung in der Zeile: If WorksheetFunction.CountA(aTmp5()) > 0 Then
Sub page5()
If UserForm4.MultiPage1.Value = 4 Then
Worksheets("Lehrerliste_Löschtabelle").Activate
'Anfang für Page5
Call Array_fuellen5
UserForm4.Caption = " Daten erfassen, ändern, löschen."
UserForm4.Width = 1200
UserForm4.Height = 620
With UserForm4.ListBox5 ' betrifft die ListBox1
.Height = 216 ' die Höhe festlegen
.Left = 12 ' den linken Randabstand festlegen
.Top = 48 ' den oberen Randabstand festlegen
.Width = 930 ' die Breite festlegen
.Font.Size = 10 ' die Schriftgröße festlegen
.ForeColor = RGB(0, 0, 255) ' Schriftfarbe immer mit RGB
.ColumnCount = 12 ' die Anzahl der Spalten festlegen
' die Breite der Spalten festlegen
.ColumnWidths = _
("4,5 cm;3,5 cm;4,5 cm;2 cm;1,5 cm;2,5 cm;3,5 cm;1,1 cm;2,3 cm;2,2 cm;2,2 cm;2,5 cm")
.Clear ' die ListBox leeren
' If WorksheetFunction.CountA(aTmp5()) = 0 Then
' Exit Sub
' End If
If WorksheetFunction.CountA(aTmp5()) > 0 Then
.Column = aTmp5
End If
End With
UserForm4.CommandButton41.Enabled = False 'den Datensatz wiederherstellen-Button sperren
' UserForm4.CommandButton2.Enabled = True ' den Suchen-Button freigeben
' UserForm4.CommandButton3.Enabled = False ' den Änder-Button sperren
' UserForm4.CommandButton4.Enabled = False ' den Lösch-Button sperren
UserForm4.CommandButton35.Enabled = False ' den Eingabe-Button sperren
' UserForm4.TextBox1.Enabled = True 'TextBox1 zum Suchen freigeben
' UserForm4.TextBox2.Enabled = True 'TextBox2 zum Suchen freigeben
' ' markiert den Text der TextBox13
' With UserForm4.TextBox1
' .SetFocus
' .SelStart = 0
' .SelLength = .TextLength
' End With
'Ende Page5
End If
End Sub Mein Versuch mit Zeile: ' If WorksheetFunction.CountA(aTmp5()) = 0 Then
klappt leider nicht.
Was muss ich bitte einfügen, damit die leere Listbox angezeigt wird.
Besten Dank
Gruss
Peter

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem mit Listbox
14.08.2017 19:07:38
AlterDresdner
Hallo Peter,
Du müsstest m.E.:
- regeln, dass aTmp5 kein Array ist (z.B. Nothing oder ""), wenn lLetzte in ...füllen kleiner 2 ist
- und dann If not isarray(atmp5) then exit sub
Gruß der AlteDresdner
AW: Problem mit Listbox
15.08.2017 06:25:02
Peter
Hallo Alter Dresdener,
Dein Ansatz ist sicherlich grundsätzlich richtig - funktioniert aber leider nicht.
Habe es wie folgt gelöst:
If Worksheets("Lehrerliste_Löschtabelle").Range("A2") = "" Then
UserForm4.CommandButton41.Enabled = False 'den Datensatz wiederherstellen-Button sperren
UserForm4.CommandButton35.Enabled = False ' den Eingabe-Button sperren
Exit Sub
End If
Besten Dank für Deine Hilfe.
Gruss
Peter
Anzeige
AW: Problem mit Listbox
14.08.2017 19:30:41
Matthias
Hallo Peter! Welche Fehlermeldung kommt den? M.E. liegt das Problem daran, dass du bei einer leeren Tabelle aTMP5 nicht dimensioniert hast. Damit kann die Funktion auch auf keine Werte zugreifen. Nebenbei habe ich mal getestet und bei der Worksheetfunktion i.V.m. mit einem Array hat er mir eigentlich nur die Dimensionen angezeigt aber nicht auf leere Inhalte geprüft. Du solltest an Stelle der Überprüfung auf leere Zeilen lieber prüfen ob das Array dimensioniert ist. Gibt da verschiedene Varianten. Ersetze mal diese Zeile hier

If WorksheetFunction.CountA(aTmp5()) > 0 Then
durch diese
If not not aTmp5  0 Then 'dimensioniert

DA wird dann nur geprüft, ob aTmp5 dimensioniert ist, dann ist der WErt ungleich 0.
VG
Anzeige
AW: Problem mit Listbox
15.08.2017 06:26:06
Peter
Hallo Matthias,
Dein Ansatz ist sicherlich grundsätzlich richtig - funktioniert aber leider nicht.
Habe es wie folgt gelöst:
If Worksheets("Lehrerliste_Löschtabelle").Range("A2") = "" Then
UserForm4.CommandButton41.Enabled = False 'den Datensatz wiederherstellen-Button sperren
UserForm4.CommandButton35.Enabled = False ' den Eingabe-Button sperren
Exit Sub
End If
Besten Dank für Deine Hilfe.
Gruss
Peter

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige