Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Textfeldgrösse je nach anzahl Zeilen

Betrifft: Textfeldgrösse je nach anzahl Zeilen von: Pascal
Geschrieben am: 28.08.2014 11:24:17

Hallo miteinander
Ich habe hier mal wieder eine Frage.

Und zwar möchte ich ab einer Excel-Arbeitsmappe diverse Zelleninhalte in Textfelder auf einer Userform lesen.
Dabei sind die Zelleninhalte auf der Arbeitsmappe nicht immer gleich gross. D.h. mal sind in einer Zelle ganze Sätze, mal nur einzelne Wörter.

Kann ich auf der UserForm meine TextBoxen so programmieren, dass diese in der Breite immer fix sind, sich aber in der Höhe je nach Textumfang welcher aus der Arbeitsmappen-Zelle kommt varieren.

Steht also in der Zelle in Excel bloss ein Wort, so soll das Textfeld auch entsprechend schlank sein.
Steht hingegen mehr als ein Wort (oder gar mehrere Zeilen, so soll auch das Textfeld entsprechend länger sein.

geht sowas ?

Bin für Eure Tips herzlich dankbar !

  

Betrifft: AW: Textfeldgrösse je nach anzahl Zeilen von: yummi
Geschrieben am: 28.08.2014 11:34:39

Hallo Pascal,

anbei mal eine Funktion ListeFuellen
da wird die sowohl die Listenlänge als auch die Listenbreite an die Listenbedürfnisse angepasst

Function ListeFuellen(ByRef Box As ComboBox, ByVal ispalte As Integer, ByVal wks As Worksheet,  _
ByVal bIndex As Boolean, Optional ByVal startzeile As Integer = 2) As Boolean
Dim llast As Long
Dim i As Long
Dim strRange As String
Dim dWidth As Double

    llast = wks.Columns(ispalte).Find(what:="?*", LookIn:=xlValues, lookat:=xlWhole,  _
searchdirection:=xlPrevious).Row
    'llast = wks.Cells(wks.Rows.Count, ispalte).End(xlUp).Row
    strRange = WandleZahlInBuchstaben(ispalte) & startzeile & ":" & WandleZahlInBuchstaben( _
ispalte) & llast
    If llast > startzeile Then
        Box.List = wks.Range(strRange).Value
    Else
        Box.AddItem wks.Range(strRange).Value
    End If
    dWidth = GetLength(ispalte, wks) + 40
    If dWidth > 102 Then
        If dWidth < 500 Then
            Box.ListWidth = dWidth
'            SendMessageA Box.hwnd, CB_SETDROPPEDWIDTH, dWidth, 0
        Else
            Box.ListWidth = 500
'            SendMessageA Box.hwnd, CB_SETDROPPEDWIDTH, 400, 0
        End If
    End If
    If bIndex = True Then
        Box.ListIndex = 1
    Else
        Box.ListIndex = 0
    End If
End Function

Function WandleZahlInBuchstaben(ByVal iWert As Integer) As String
    Dim Spaltenbuchstabe As String
    
    Spaltenbuchstabe = Right(Columns(iWert).Address, _
    Len(Columns(iWert).Address) - _
    InStrRev(Columns(iWert).Address, "$"))

    WandleZahlInBuchstaben = Spaltenbuchstabe
End Function

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



  

Betrifft: AW: Textfeldgrösse je nach anzahl Zeilen von: Pascal
Geschrieben am: 28.08.2014 12:26:23

Hallo
Danke schon mal herzlich für diese Function.
Die werde ich dann gleich mal ausprobieren.


  

Betrifft: AutoSize-Eigenschaft von: Rudi Maintaire
Geschrieben am: 28.08.2014 13:03:13

Hallo,
lies mal die Hilfe.

Gruß
Rudi


 

Beiträge aus den Excel-Beispielen zum Thema "Textfeldgrösse je nach anzahl Zeilen"