Ich bräuchte mal einen Rat für die Platzierung einer ListBox. Folgende Situation:
In mehreren Zeilen einer Excel-Datei gibt es für den Anwender einen Button, mit dem er Zusatzdaten abrufen kann, die in einer ListBox angezeigt werden sollen. Im Prinzip funktioniert das auch alles einwandfrei, die ListBox wird sauber gefüllt und angezeigt. Nur mit der Stelle wo sie erscheint hapert es. Die Spaltenausrichtung passt, von der Zeilenausrichtung soll die Oberkante der Listbox mit der Oberkante der Zeile übereinstimmen, für die sie aufgerufen wurde. Was passiert ist:
- Die ListBox erscheint ausgerichtet auf die Zeile, für die man zuvor eine ListBox aufgerufen hat.
- ==> Schließt man die ListBox und ruft sie für die gleiche Zeile erneut auf erscheint sie richtig.
- War zuvor keine ListBox aufgerufen, erscheint die ListBox in Zeile 1.
Hier das Macro:
Sub deflistbox()
LC = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
LBname = "ListBox_WBS"
' lösche Listbox wenn bereits existent
If Range("AD1").Value "" Then
ActiveSheet.OLEObjects(LBname).Delete
If Range("AD1").Value = LC Then
' schließe Listbox und beende Sub
Range("AD1").Value = ""
Exit Sub
End If
End If
' Definiere ListBox
Dim objOLE As OLEObject
Set objOLE = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ListBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=5, Top:=Cells(LC, 1).Top, Width:=530, Height:=97.5)
With objOLE
.Name = LBname
.Visible = False
.Object.ListStyle = fmListStyleOption
.Object.MultiSelect = fmMultiSelectMulti
.Object.MatchEntry = fmMatchEntryComplete
.Object.Locked = False
.Object.ColumnCount = 8
.Object.BoundColumn = 1
.Object.ColumnWidths = "15; 125; 45; 45; 100; 100; 260; 0"
End With
' hier wird normalerweise die ListBox gefüllt
' zeige ListBox
ActiveSheet.OLEObjects(LBname).Visible = True
ActiveSheet.OLEObjects(LBname).Activate
Set objOLE = Nothing
Range("AD1").Value = LC
' Anzeige justieren
ActiveWindow.ScrollRow = LC
End Sub
In LC muss eigentlich die richtige Zeilennummer stehen, da die Nummer in Zelle AD1 sichtbar ist und auch richtig gescrollt wird. Kann mir jemand erklären, warum aber die Platzierung der ListBox erst beim zweiten Versuch gelingt?
PS: Ein Testfile mit der Struktur ohne Daten ist verfügbar: https://www.herber.de/bbs/user/134445.xlsm