Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten 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
Antworten 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
Antworten Top
#4
(30.06.2017, 09: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
Antworten 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
Antworten Top
#6
(02.07.2017, 16: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.
Antworten Top


Gehe zu:


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