Anzeige
Archiv - Navigation
1404to1408
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

Breite von ComboBox

Breite von ComboBox
05.02.2015 10:12:57
ComboBox
Hallo,
ich nutze in einem Userform eine Combobox, in der in der Auswahl 3 Spalten angezeigt werden (ColumnCount: 3)
Leider muss bei dieser Art der Verwendung auch die ComboBox entsprechend Breit gemacht werden, damit die Liste lesbar ist.
Frage:
Gibt es eine Möglichkeit die ComboBox z.B. mit einer Breite von 1 cm darzustellen, die Liste aber mit einer größeren Breite z.B. 4 cm?
Gruß
Peter

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

Betreff
Datum
Anwender
Anzeige
AW: Breite von ComboBox
05.02.2015 10:45:15
ComboBox
Hallo Peter,
ja das geht. Du musst aber um die breite festlegen zu können die Spalte, wo der Wert herkommt als Berechnungsgrundlage benutzen.
Du passt also die Breite der Spalte mit autofit an, legst dann ein Bild eine zelle der Spalte, damit kannst du dann die Pixel berechnen wie breit die Spalte ist und dieses Ergebnis zum setzen der Listenbreite nutzen.
Aufruf:
iSpalte ist die Spalte wo der wert herkommt und wks ist das Worksheet von dem es kommt.

Box.ListWidth = GetLength(ispalte, wks) + 40
Function GetLength(ByVal ispalte As Integer, ByVal wks As Worksheet) As Double
Dim shp As Shape
Dim dWidth As Double
Dim strRange As String
Dim dRet As Double
Dim icount As Integer
Application.ScreenUpdating = False
dWidth = wks.Columns(ispalte).ColumnWidth
wks.Columns(ispalte).AutoFit
strRange = WandleZahlInBuchstaben(ispalte) & "1"
wks.Range(strRange).CopyPicture Appearance:=xlScreen, Format:=xlBitmap
wks.Paste
icount = wks.Shapes.Count
Set shp = wks.Shapes(icount)
dRet = shp.Width
shp.Delete
wks.Columns(ispalte).ColumnWidth = dWidth
Application.ScreenUpdating = True
GetLength = dRet
End Function
Gruß
yummi

Anzeige
AW: Breite von ComboBox
05.02.2015 11:30:10
ComboBox
Ich muss hier nochmal eine Frage nachschieben:
Ich habe es mir einfach gemacht und einfach die ListWidth auf einen Wert von 400 gesetzt. So weit so gut.
Allerdings passen nun die Überschriften, die ich mit ColumnHeads auf True gesetzt habe nicht mehr zu den Einträgen der Liste.
Gibt es eine möglichkeit, die einzelnen Spaten der Liste anzupassen? Es würde mir reichen, wenn ich für jede Spalte einen separaten Wert angeben könnte.
Gruß,
Peter

AW: Breite von ComboBox
05.02.2015 11:48:37
ComboBox
Hallo Peter,
mal aus der Hilfe kopiert (soltest du eigentlich haben)
Beispiel für Listenfeld-Steuerelement sowie die Eigenschaften ColumnCount und ColumnWidths
Im folgenden Beispiel werden anhand der ColumnWidths-Eigenschaft die Spaltenbreiten in einem mehrspaltigen Listenfeld-Steuerelement (ListBox) geändert. Dabei werden drei Textfeld-Steuerelemente (TextBox) verwendet, um die einzelnen Spaltenbreiten anzugeben, und die Maßeinheiten der einzelnen Textfeld-Steuerelemente werden mit Hilfe des Exit-Ereignisses angegeben.
Wenn Sie dieses Beispiel verwenden möchten, kopieren Sie diesen Beispielcode in den Bereich Deklarationen eines Formulars. Das Formular muss Folgendes enthalten:
Ein Listenfeld-Steuerelement (ListBox) mit dem Namen ListBox1.
Drei Textfeld-Steuerelemente (TextBox) mit den Namen TextBox1, 2 und 3.
Ein Befehlsschaltfläche-Steuerelement (CommandButton) mit dem Namen CommandButton1.
Geben Sie den Wert 0 ein, um eine Spalte auszublenden.

Dim MyArray(2, 3) As String
Private Sub CommandButton1_Click()
'ColumnWidths requires a value for each column
'separated by semicolons
ListBox1.ColumnWidths = TextBox1.Text & ";" _
& TextBox2.Text & ";" & TextBox3.Text
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As _
MSForms.ReturnBoolean)
'ColumnWidths accepts points (no units), inches
'or centimeters; make inches the default
If Not (InStr(TextBox1.Text, "in") > 0 Or _
InStr(TextBox1.Text, "cm") > 0) Then
TextBox1.Text = TextBox1.Text & " in"
End If
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As _
MSForms.ReturnBoolean)
'ColumnWidths accepts points (no units), inches
'or centimeters; make inches the default
If Not (InStr(TextBox2.Text, "in") > 0 Or _
InStr(TextBox2.Text, "cm") > 0) Then
TextBox2.Text = TextBox2.Text & " in"
End If
End Sub
Private Sub TextBox3_Exit(ByVal Cancel as MSForms.ReturnBoolean)
'ColumnWidths accepts points (no units), inches or
'centimeters; make inches the default
If Not (InStr(TextBox3.Text, "in") > 0 Or _
InStr(TextBox3.Text, "cm") > 0) Then
TextBox3.Text = TextBox3.Text & " in"
End If
End Sub
Private Sub UserForm_Initialize()
Dim i, j, Rows As Single
ListBox1.ColumnCount = 3
Rows = 2
For j = 0 To ListBox1.ColumnCount - 1
For i = 0 To Rows - 1
MyArray(i, j) = "Row " & i & ", Column " & j
Next i
Next j
'Load MyArray into ListBox1
ListBox1.List() = MyArray
'1-inch columns initially
TextBox1.Text = "1 in"
TextBox2.Text = "1 in"
TextBox3.Text = "1 in"
End Sub
Gruß
yummi

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige