Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1368to1372
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

VBA Autofit nur auf sichtbare Zellen anwenden

VBA Autofit nur auf sichtbare Zellen anwenden
22.07.2014 06:32:41
Peter
Hallo liebe Excel Gemeinde,
hat einer von euch einen VBA code für die Autofit Funktion für nur eingeblendete Zellen.
Folgender Fall:
In den Zellen der sichtbare Spalten befindet sich meist ein nur einzeiliger Text. (Spalten A:B)
Es sind einige Spalten ausgeblendet. (Spalten C:E )
In den ausgeblendeten Spalten befindet sich sehr viel Text.
Wenn man nun den Text per Autofit VBA code:

Rows("5:10000").EntireRow.AutoFit

werden die Texte in den augeblendeten Spalten mit berücksichtigt und die Höhe der Zeilen danach eingestellt.
Ziel ist es aber, dass durch einen speziellen VBA Autofit code die Zeilen nur die Höhe des sichtbaren Textes haben, der in Spalte A oder B ist.
Dadurch sind mehr Zeilen auf den Monitor darstellbar.
Da die Datei viele Zeilen hat (10000) kommt eine FOR NEXT Schleife, die die Höhe per definierte Spalte genau einstellt nicht in Betracht. Dauert einfach zu lange.
Was ich schon im Internet gefunden habe und nicht (bei mir) funktioniert:

Rows("5:10000").SpecialCells(xlCellTypeVisible).Rows.AutoFit
Range("A5:B10000").Rows.AutoFit
habt ihr noch eine Idee die die Zeilenhöhe schnell einstellen lässt?
Gruß Peter

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

Betreff
Datum
Anwender
Anzeige
quick and dirty gefällig?
22.07.2014 07:57:36
Klaus
Hallo Peter,
statt dich mit den Spezifiaktionen von AutoFit herumzuärgern ...
-kopiere alle Spalteninhalte der nicht-zu-beachten Spalten in ein seperates temp-Blatt
-lösche die Spalten im Hauptblatt
-lass AutoFit laufen wie es ist
-kopiere den Inhalt des temp-Blattes zurück
das ist quick-and-dirty, sollte aber zum Ziel führen.
Ich lasse den Beitrag noch offen, in der Hoffnung auf einen eleganteren Lösungsvorschlag.
Grüße,
Klaus M.vdT.

AW: quick and dirty gefällig?
22.07.2014 10:57:45
Peter
Hallo Klaus,
danke für die Antwort. Das funktioniert!
Deine Antwort hat mich aber auch auf den richtigen Pfad gebracht, warum die benannten Autofitfunktionen bei nicht funktionieren.:
Ich habe Übersehen, dass bei den Zellen der versteckten Spalten die der Zeilenumbruch aktiviert war! Diesen habe ich nun rausgenommen und siehe da autfit funktioniert!
Trotzdem danke für deine Hilfe.
Gruß Peter

Anzeige
VBA Autofit nur auf sichtbare Zellen anwenden
22.07.2014 12:08:26
fcs
Hallo Peter, hallo Klaus,
wenn ganze Spalten ein-/ausgeblendet werden, dann könnte man es wie folgt lösen.
Das Makro hebt den Textumbruch auf, wenn die entsprechenden Spalten ausgeblendet sind.
Sind die Spalten sichtbar, dann wird der Textumbruch in den Zellen wieder gesetzt.
Gruß
Franz
'Beispiele für Aufruf des Makros
Sub AutofitSpecial_Activesheet()
'AutofitSpezial im aktiven Tabellenblatt in Spalten C (3) und D (4) anwenden
Call prcAutoFitRows_Spezial(arrSpalten:=Array(3, 4), Zeile_1:=5)
End Sub
Sub AutofitSpecial_Tabelle1()
'AutofitSpezial in Tabelle1  in Spalten C (3) und D (4) anwendenanwenden
Call prcAutoFitRows_Spezial(arrSpalten:=Array(3, 4), Zeile_1:=5, wks:=Worksheets("Tabelle1"))
End Sub
'Code in einem allgemeinen Modul
'Makro für spezielen Autofit
Sub prcAutoFitRows_Spezial(arrSpalten As Variant, Optional Zeile_1 As Long = 1, _
Optional wks As Worksheet)
Dim Spalte As Long
'arrSpalten = Array mit den Nummern der Spalten, die für Row-Autofit ausgeblendet _
sein können
'Zeile_1    = Zeile ab der Autofit für Zeilen ausgeführt werden soll
'wks        = Tabellenblatt in dem AutofitSpezial angewendet werden soll
If wks Is Nothing Then Set wks = ActiveSheet
Application.ScreenUpdating = False
With wks
For Spalte = LBound(arrSpalten) To UBound(arrSpalten)
With .Range(.Cells(Zeile_1, arrSpalten(Spalte)), .Cells(.Rows.Count, arrSpalten( _
Spalte)))
If .EntireColumn.Hidden = True Then
.EntireColumn.Hidden = False
.WrapText = False
.EntireColumn.Hidden = True
Else
.WrapText = True
End If
End With
Next
.Range(.Rows(Zeile_1), .Rows(.Rows.Count)).EntireRow.AutoFit
End With
Application.ScreenUpdating = True
End Sub

Anzeige
AW: VBA Autofit nur auf sichtbare Zellen anwenden
23.07.2014 03:16:33
Peter
Hallo Franz,
das ist natürlich eleganter (ツ).
Super vielen Dank!
Gruß Peter

329 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige