Schleife für Spaltenbreite
#1
Hey Leute!
Ich versuche gerade mittels VBA die Spaltenbreite für Spalten, welche zwischen Zeile 2&40 leer sind, eine definierte Spaltenbreite zu vergeben.
Dies erfolgt für Spalten ab 2/B und geht bis zur letzten benutzten Spalte.
Leider komme ich mit folgendem Ansatz überhaupt nicht weiter.
Wie verbinde ich die Schleife mit der Spaltenbreite?
Wenn ihr einen Vorschlag ohne VBA habt, gerne (:

Code:
Sub SetColumnWidth()
Dim LastColumn As Long
Dim EachColumn As Long
LastColumn = tblOne.Cells(13, Columns.Count).End(xlToLeft).Column

For EachColumn = 2 To LastColumn
    If Worksheets("tblOne").Range(Cells(2, EachColumn), Cells(40, EachColumn)).Value = "" Then
   
    xxx.ColumnWidth = 5
    End If
   
End Sub

Beste Grüße
Top
#2
Hallo Joshua,

so müsste Dein Code angepasst und erweitert werden, damit es fuktioniert:


Code:
Sub SetColumnWidth()
  Dim LastColumn As Long
  Dim EachColumn As Long
  With Worksheets("tblOne")
    LastColumn = .Cells(13, Columns.Count).End(xlToLeft).Column
    For EachColumn = 2 To LastColumn
      If Application.CountA(.Range(.Cells(2, EachColumn), .Cells(40, EachColumn)).Value) = 0 Then
        .Columns(EachColumn).ColumnWidth = 5
      Else
        .Columns(EachColumn).ColumnWidth = 10
      End If
    Next EachColumn
  End With
End Sub
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • joshua
Top
#3
Kann es sein, dass Value falsch gesetzt ist?

CountA zählt ja die leeren Zeilen.

Glaube das muss Value <>0 hin

Dann werden jedoch alle Spalten bearbeitet bzw. das Else nicht beachtet


Edit: Tut mir leid, ich habe mich falsch ausgedrückt :/
Es soll nur die Spalten mit dem leeren Bereich auf 5 reduziert werden, alle weiterhin sollen so bleiben
Top
#4
(30.06.2017, 10:51)joshua schrieb: CountA zählt ja die leeren Zeilen.

Hallo,

nein, CountA zählt alle Zelleninhalte.
Hast Du Formen in dem Bereich?
Gruß Atilla
Top
#5
Hallöchen,

je nachdem, was drin steht, könntest Du ja auch alle Spalten auf 5 setzen und anschliessend autofitten.
Alternativ könntest Du wegen der Formeln mit "" z.B. so oder ähnlich herangehen:
=SUMMENPRODUKT((A1:A3=A1:A3)*(A1:A3<>""))
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • joshua
Top
#6
(02.07.2017, 17:57)schauan schrieb: Hallöchen,

je nachdem, was drin steht, könntest Du ja auch alle Spalten auf 5 setzen und anschliessend autofitten.
Alternativ könntest Du wegen der Formeln mit "" z.B. so oder ähnlich herangehen:
=SUMMENPRODUKT((A1:A3=A1:A3)*(A1:A3<>""))

Vielen Dank!

Habe nun alle intial auf 5px gestellt und als letzte Zeile im Code
Code:
Worksheets("tblOne").Columns("A:Z").AutoFit
nach dem Datenimport eingefügt, um entsprechend die breite anzupassen.


@atilla:
Nein, es sind keine Formen enthalten.
Leere Zeilen und bedingte Formatierung, welche sich jedoch nur auf den Rahmen bezieht.
Top


Gehe zu:


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