Listbox - Letzter Eintrag nicht sichtbar
#1
Obwohl ich die Listbox Eigenschaft IntegralHeight auf TRUE stehen habe,
verschwindet der letzte Eintrag der Listbox fast komplett aus dem Sichtbereich.

Stelle ich die Eigenschaft auf FALSE habe ich einen recht "dynamischen Anblick" der letzten Zeile.
Mal voll da, mal halb da.....

Ich habe schon mit den einzelnen Fonts rumgespielt. ARIAL, CALIBRI Mal Höhe 8, mal 9, mal 10....
Gibt es da noch einen versteckten Schalter / Befehl, der dieses Verhalten korrigiert?
Top
#2
Hallo Achim,

handelt es sich um ein ähnliches Problem wie hier? Und die Frage nach dem hochladen brauche ich wohl nicht stellen, da die Datei sehr groß ist?
Gruß Stefan
Win 10 / Office 2016
Top
#3
Nein Stefan, hier handelt es sich um ein ganz anderes Problem.

Es geht um die Darstellung der Listbox,
dessen letzter Eintrag je nach Font und Größe und trotz IntegralHeight Eigenschaft auf TRUE
nicht vollständig sichtbar ist; manchmal sogar nicht mal mehr lesbar.

Ich dachte halt, dass es da in den Tiefen des VBA noch den einen, oder anderen Befehl gibt das zu verhindern.
Top
#4
welche( r )
- Excelversion
- Art von ListBox
- Ort der ListBox
- Methode der Befüllung

????
Top
#5
Excel 2007
Art der Listbox? Wie ist das gemeint? Gibt es mehrere Arten?
Ort der Listbox?...Auch das verstehe ich nicht ganz. Sie ist in einer UF in einem Frame drin.
Methode der Befüllung....
Zuerst werden über den Spezialfilter in das Blatt AUSWAHL die gefilterten Zeilen eingetragen.
Danach kommt der Super-Code von dir, der bestimmte Zeilen löscht.
Und dann werden die übriggebliebene Zeilen in die Listbox gegeben.
Und das ganze sieht dann so aus:

Code:
Rem Filter starten
Nur_Typ:
  Worksheets("Bohren").Range("A1:DS10000").AdvancedFilter Action:=xlFilterCopy, _
  CriteriaRange:=Worksheets("Auswahl").Range("A1:DS2"), CopytoRange:=Worksheets("Auswahl").Range("A3"), Unique:=False

If Worksheets("Listen").Range("A18") = "N" Then 'Bei "N" werden alle OHNE Artikelnummer gelöscht
   With Worksheets("Auswahl").Columns(34)
     .Replace What:="x", Replacement:="#N/A", LookAt:=xlWhole, MatchCase:=False
     .SpecialCells(xlCellTypeConstants, 16).EntireRow.Delete
   End With
End If
      
Rem Anzahl Lösungen ermitteln
For n = 4 To Worksheets("Auswahl").Cells(Rows.Count, 23).End(xlUp).Row: Next n
n = Worksheets("Auswahl").Cells(Rows.Count, 23).End(xlUp).Row - 3  '-3, weil der Beginn erst ab Zeile 4 ist
Frame1.Caption = n & " " & Labels(21) 'Rem Anzahl Lösungen eintragen
Top
#6
Hallo Achim,

Zitat:Ort der Listbox?...Auch das verstehe ich nicht ganz. Sie ist in einer UF in einem Frame drin

Das von Dir beschriebene Verhalten tritt dann auf, wenn z.B. die Listbox vom Frame abgeschnitten ist,
heißt sie liegt nicht ganz im Frame, oder ein anderes Steuerelement Schneidet die Listbox,
oder sie geht über die Userform drüber.

Eine weiter Ursache, Du änderst die Listbox Größe zur Laufzeit bzw. beim Activate/Initialize
Gruß Atilla
Top
#7
Hallo Achim,

Setz im Eigenschaftsfenster die IntegralHeight auf False und im Code dann nach Anpassung der Größe wieder auf True.

z.B:
Code:
With Me.ListBox1
   .List = Range("A2:A20").Value
   .ListBox1.Height = 89
   .ListBox1.IntegralHeight = True
End With


Hab da noch eine Frage: Du schreibst, dass Du mit dem Spezialfilter erst Fiterst und dann bestimmte Zeilen, die mit "x" versehen sind löschst.
Warum Filterst Du die nicht gleich mit raus? Das kann doch der Spezialfilter in einem Abwasch erledigen.
Gruß Atilla
Top
#8
Hallo Achim,

Zitat:Art der Listbox? Wie ist das gemeint? Gibt es mehrere Arten?
Es gibt auch die ListBox aus den Formularsteuerelementen, welche nur in einem Tabellenblatt möglich ist
und die ListBox aus den ActiveX-Steuerelementen, welche in einem Tabellenblatt oder einer Userform
verwendet werden kann.

Zitat:Ort der Listbox?...Auch das verstehe ich nicht ganz. Sie ist in einer UF in einem Frame drin.
Möglich sind bei AxtivX-Elementen eben Tabellenblätter und UserForms.

Zum geposteten Code, welcher das Befüllen der ListBox zwar nicht enthält, hätte ich aber 2 Sachen:

1. die Zeile
Code:
For n = 4 To Worksheets("Auswahl").Cells(Rows.Count, 23).End(xlUp).Row: Next n
könnte gelöscht werden

2. das Löschen der "x"-Zeilen wäre überflüssig, da das mit dem Spezialfilter schon erledigt werden könnte.

Gruß Uwe
Top
#9
Hallo Atilla,

ich hatte die IntegralHeight Eigenschaft fest eingestellt auf TRUE; allerdings nicht im VBA Code, sondern im Eigenschaftenfenster.
Jetzt habe ich es mal so gemacht wie du es vorschlägst; erst die Abmessungen eingeben bei fest eingestellter Eigenschaft FALSE im Fenster der Eigenschaften und dann erst im VBA Code auf TRUE gesetzt.
Das hat funktioniert. Das war eine gute Idee.

Der Spezialfilter ist ne Wissenschaft für sich. Das hat ewig gedauert, bis ich das für meine Zwecke hinbekommen hatte.
Dieses Zeilen löschen läuft über OptionButton, also eine Einstellung, die der User machen kann.
Ich weiß gar nicht wie ich das in den Advance Filter einbauen sollte.
Top
#10
Ach ja, hatte ich vergessen. Das Einlesen in die Listbox.
Code:
Rem Lösungen in die Listbox eintragen
With Worksheets("Auswahl")
    ListBox1.RowSource = "Auswahl!" & .Range(.Cells(4, 1), .Cells(n + 3, 125)).Address
End With
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 3 Gast/Gäste