Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Spaltenbreite ermitteln (für DropDown-Felder)





Frage

Hallo Jungs, wieder eine knifflige Sache (zumindest für mich). Ich lasse in einem Sheet automatisiert Dropdowns einfügen und die Spaltenbreite anpassen. Die Spaltenbreite ist dabei stets auf den gleichen Wert gesetzt, so dass das Dropdownmenü die Zelle sauber abdeckt. Nun würde ich aber gerne die Zelle gerne automatisch ihres Inhaltes entsprechend anpassen (kein Problem) und dem DD-Feld die Daten als Parameter mitgeben (Problem!). Wie kann ich die Spaltenbreite (Zeilenhöhe ist hierbei nicht so wichtig) einer Zelle ermitteln? Beste Grüße, guethi

Antwort 1 von guethi

Lösung:

breite = Application.Round(Cells(2, 1).ColumnWidth + 1, 0)

Wobei ich aufrunden muss, da die DD-Box einen Wert mit Punkt braucht, Excel aber aus dieser Berechnung einen mit Komma liefert...:-/

Das Problem verschiebt sich nun dahingehend, dass ich den Wert der Spaltenbreite in den der Boxbreite umrechnen muss, da offensichtlich zwei verschiedene Einheiten verwendet werden.

Ich halte euch auf dem Laufenden...

viele Grüße,

guethi

Antwort 2 von Coolpix

hallo guethi,

dein Problem ist, dass du ein Dropdownfeld aus der Formularsymbolleiste benutzt...
Das sind Zeichnungsobjekte welche sich über einen Skalierungsfaktor ("ShapeRange.ScaleWidth") verändern lassen...
Für dein Vorhaben nicht so praktikabel.

Wenn du ein Kombinationsfeld aus der Steuerelement-Toolbox nimmst geht das viel einfacher:



Me.ComboBox1.Width = Me.Range("B7").Width



weil die beiden Größenwerte das gleiche Format haben.

Feedback fänd ich Klasse !!!

Greetings ;-)

Antwort 3 von Coolpix

hallo nochmal,

hab nochmal nachgeschlagen...

mit dem Dropdown aus der Formularleiste geht´s auch:


ActiveSheet.Shapes("Dropdown 1").Select
    Selection.ShapeRange.Width = ActiveSheet.Range("C2").Width


Greetings ;-)

Antwort 4 von guethi

Besten Dank, Coolpix!

Ich habe es mit der zweiten Variante gelöst, war ein wenig Gefuddel, aber wenn´s denn läuft :-)...schööön!

Für alle die mal ähnliches vorhaben, hier der Code zur freien Verwendung:


Sub dropdowns()

    Application.ScreenUpdating = False
    Anzahl_Spalten = ActiveSheet.UsedRange.Columns.count

    ´Einstellen der Spaltenbreite
        Sheets("Tabelle1").Activate
        Cells.Select
        Cells.EntireColumn.AutoFit
    
    ´pixel bezeichnet die Anfangskoordinate des DD-Feldes, zunächst also Null
        pixel = 0
    
    For i = 1 To Anzahl_Spalten
        
        Cells(2, i).Select
    

    ´Die Breite der Box (die weiter unten auch die neue Koordinate bestimmt) wird festgelegt _
     dabei wird durch diese if-Schleife stets abgerundet
     
            breite = ActiveCell.Width
            breite2 = Application.Round(ActiveCell.Width, 0)
        
            If breite < breite2 Then
            breitefin = breite
            Else
            breitefin = breite - 1
            End If
            
    ´Die DD-Box wird erstellt, dabei werden folgende Parameter mitgegeben (Position horizontal, _
     Position vertikal, Breite, Höhe)
        
        ActiveSheet.dropdowns.Add(pixel, 12.75, breite, 12.75).Select
       
    ´hier liegen die Eigenschaften des DD-Feldes
        With Selection
            .ListFillRange = "Tabelle2!$A$1:$A$6"
            .LinkedCell = ActiveCell.Address
            .DropDownLines = 7
            .Display3DShading = True
            .PrintObject = False
        End With
        
    ´und hier wird die horizontale Position hochgezählt
        pixel = pixel + breite
    
    Next i
    Application.ScreenUpdating = True

End Sub


Beste Grüße,

guethi

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: