Anzeige
Archiv - Navigation
1176to1180
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

Spaltenausblendung per Schleife: Geschwindigkeit

Spaltenausblendung per Schleife: Geschwindigkeit
Walter
Hallo verehrte Excel-Gemeinde,
kann mir irgendein freundlicher Mitstreiter Hinweise geben, warum eine solche Harmlosigkeit (dä _
chte ich) geschlagene 10 Sekunden zur Abarbeitung dauert? Und eventuell, was ich falsch mache/ _
besser machen könnte?

Sub Saubermachen()
Dim intSp As Integer
Application.ScreenUpdating = False
With Worksheets("Minibar")
.Unprotect
For intSp = 3 To 72
If .Cells(3, intSp).Value = 0 Then
'                .Columns(intSp).Hidden = False
'        Else
.Columns(intSp).Hidden = True
End If
Next
.Protect
End With
Application.ScreenUpdating = True
End Sub

Das wäre ganz wunderbar!
Grüße,
Walter
AW: Spaltenausblendung per Schleife: Geschwindigkeit
21.09.2010 15:57:03
JogyB
Hallo Walter,
Sub Saubermachen()
Dim intSp As Integer
Dim ausbRange As Range
Application.ScreenUpdating = False
With Worksheets("Minibar")
.Unprotect
' Alles einblenden
.UsedRange.EntireColumn.Hidden = False
For intSp = 3 To 72
If .Cells(3, intSp).Value  0 Then
If ausbRange Is Nothing Then
Set ausbRange = .Cells(3, intSp)
Else
Set ausbRange = Union(ausbRange, .Cells(3, intSp))
End If
End If
Next
' Gewünschte Spalten ausblenden
If Not ausbRange Is Nothing Then ausbRange.EntireColumn.Hidden = True
.Protect
End With
Application.ScreenUpdating = True
End Sub

Gruß, Jogy
Anzeige
ZusatzFrage:Spaltenausblendung per Schleife
21.09.2010 16:34:04
Lorenz
Hallo Jogy
Habe Walters Problem ebenfalls. Bin aber nicht "VBA gut"
Könntest Du die "For intSp = 3 To 72" ergänzen bzw. den Code dementsprechend erweitern mit:
"99 To 125", "150 To 500" "550 To xlEnd".
Danke, das wäre nett
Gruß, Lorenz
AW: ZusatzFrage:Spaltenausblendung per Schleife
21.09.2010 17:11:44
Walter
Hallo Lorenz,
das geht meines Wissens so einfach nicht, da müsste man für jeden der genannten Zahlenbereiche einzeln ansetzen.
Grüßle,
Walter
AW: ZusatzFrage:Spaltenausblendung per Schleife
21.09.2010 20:06:43
JogyB
Hallo Lorenz,
eigentlich hast Du es doch schon... das sind dann einfach 3 For-Schleifen mit jeweils demselben Inhalt wie bei dem von mir geposteten Code (die Bedingung musst Du natürlich nach Deinen Wünschen anpassen).
Gruß, Jogy
Anzeige
AW: Spaltenausblendung per Schleife: Geschwindigkeit
21.09.2010 17:04:06
Walter
Wow, beeindruckend!
Vermutlich liegt der Hase bei der Verwendung von Union im Pfeffer, vielleicht, weil Excel dann intern mit einem Array arbeitet.
Wieder was gelernt, ganz herzlichen Dank, das hat mir sehr weitergeholfen!
Grüßle,
Walter
AW: Spaltenausblendung per Schleife: Geschwindigkeit
22.09.2010 11:38:10
Klaus
Hallo Walter,
Es geht mit einer Hilfszeile (die im Anschluss gelöscht wird) noch etwas schneller, da komplett auf eine Schleife verzichtet wird. Im Bereich 3 bis 72 liegt der Unterschied im Milisekundenbereich, bei entsprechend größeren Bereichen kann das aber interessant werden.
Sub Saubermachen()
Dim lRow As Long
Dim intSpAb As Integer
Dim intSpBis As Integer
intSpAb = 3
intSpBis = 72
Application.ScreenUpdating = False
With Worksheets("Minibar")
.Unprotect
' Alles einblenden
.UsedRange.EntireColumn.Hidden = False
lRow = .UsedRange.Rows.Count + .UsedRange.Row + 1
.Range(.Cells(lRow, intSpAb), .Cells(lRow, intSpBis)).FormulaR1C1 = "=IF(R3C=0,1/0,"""") _
.Cells(lRow, intSpAb).EntireRow.SpecialCells(xlCellTypeFormulas, 16).EntireColumn. _
Hidden = True
.Cells(lRow, intSpAb).EntireRow.Delete shift:=xlUp
.Protect
End With
Application.ScreenUpdating = True
End Sub
Grüße,
Klaus M.vdT.
Anzeige
AW: Spaltenausblendung per Schleife: Geschwindigkeit
23.09.2010 13:30:27
WStM
Uuups, Klaus,
fast übersehen, sollte vielleicht doch das Email-Häkchen setzen.
Vielen Dank für Deinen Alternativvorschlag!
Allerdings ist die bereits implementiert Lösung bei den paar Spalten - und es werden ganz gewiss niemals mehr als vielleicht 100 werden - völlig ausreichend dafür, dass kein Däumchendrehen mehr droht.
Zudem fürchte ich, dass ich nach Einsatz einer solchen Hilfszeile den Druckbereich jeweils neu setzen müsste. Die Liste wird jeden Tag nach Bearbeitung ausgedruckt, leider...
Grüßle,
Walter
AW: Spaltenausblendung per Schleife: Geschwindigkeit
23.09.2010 14:44:25
Klaus
Hallo Walter,
erstmal danke für die Rückmeldung!
Ich wollte - auch für's Archiv - gerne eine Alternative für eine schleifenfreie Lösung zeigen. Den Druckbereich könnte man im Nachhinein auch per VBA wieder setzen :-)
Grüße,
Klaus M.vdT.
Anzeige
AW: Spaltenausblendung per Schleife: Geschwindigkeit
24.09.2010 11:56:18
WStM
Hallo Klaus,
Archiv ist kein schlechtes Stichwort, vielleicht sollte ich Deinen schleifenfreien Weg zumindest mal im Hinterkopf behalten, denn selbstverständlich wird sich das bei ernsthaft großen Spaltenzahlen auswirken. Und klar kann man den Druckbereich am Schluss einfach wieder setzen lassen.
In diesem Sinne,
Grüßle,
Walter

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige