Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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?
Gruß Achim
Jeder Mensch macht Fehler. Die Kunst liegt darin, sie zu machen, wenn keiner zuschaut.
Antworten 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
Antworten 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.
Gruß Achim
Jeder Mensch macht Fehler. Die Kunst liegt darin, sie zu machen, wenn keiner zuschaut.
Antworten Top
#4
welche( r )
- Excelversion
- Art von ListBox
- Ort der ListBox
- Methode der Befüllung

????
Antworten 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
Gruß Achim
Jeder Mensch macht Fehler. Die Kunst liegt darin, sie zu machen, wenn keiner zuschaut.
Antworten 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
Antworten 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
Antworten 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
Antworten 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.
Gruß Achim
Jeder Mensch macht Fehler. Die Kunst liegt darin, sie zu machen, wenn keiner zuschaut.
Antworten 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
Gruß Achim
Jeder Mensch macht Fehler. Die Kunst liegt darin, sie zu machen, wenn keiner zuschaut.
Antworten Top


Gehe zu:


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