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

Spalte ausblenden + folgespalten einzeln

Spalte ausblenden + folgespalten einzeln
17.11.2020 12:06:05
Stefan
Hallo zusammen,
ich suche eine Möglichkeit Spalten nacheinander auszubklenden und natürlich auch wieder einzublenden
Verdeutlich im endeffekt so:
Spalte M ausblenden:
Sub Ausblenden()
'Spalten ausblenden
Sheets("Tabelle1").Select
Columns("$M:$M").Select
Selection.EntireColumn.Hidden = True
End Sub
Damit blende ich Spalte M (ausgangsspalte) aus, soweit , so gut.
ABER, ich möchte, wenn ich den Button nun erneut drücke, die Folgespalte ausgeblendet wird ( N )
beim erneuten drücken des Buttons die nächste Spalte ( O )
beim erneuten drücken des Buttons die nächste Spalte ( P ) ect.
Ist dies VBA technisch möglich zu realisieren ?

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalte ausblenden + folgespalten einzeln
17.11.2020 15:47:33
Yal
Hallo Stefan,
als Ereignis (muss in der entsprechenden Worksheet-Codepane liegen), aber kann auch anders gesteuert werden:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Select Case Target.Address
Case "$M$1" 'setz voraus Spalte M ist sichtbar. nur in die erste Zeile der Spalte
Target.EntireColumn.Hidden = True
Target.Offset(0, 1).EntireColumn.Hidden = False 'nächste Spalte
Case "$N$1"
Target.EntireColumn.Hidden = True
Target.Offset(0, -1).EntireColumn.Hidden = False 'vorige Spalte
End Select
End Sub
Viel Erfolg
Yal
Anzeige
AW: Spalte ausblenden + folgespalten einzeln
17.11.2020 16:03:35
Henrik

Sub HideNextColumn()
Dim objCol As Range
For Each objCol In Range("M:XFD").Columns 'Ggf. Das Ende früher als in Spalte XFD  _
definieren.
If objCol.Hidden = False Then
objCol.Hidden = True
Exit Sub
End If
Next
'Hier kann stehen, was passiert, wenn alle Spalten ab M:M ausgeblendet sind.
End Sub

AW: Spalte ausblenden + folgespalten einzeln
17.11.2020 16:07:18
Henrik

Sub HideNextColumn()
Dim objCol As Range
For Each objCol In Range("M:XFD").Columns 'Ggf. Das Ende früher als in Spalte XFD  _
definieren.
If objCol.Hidden = False Then
objCol.Hidden = True
Exit Sub
End If
Next
'Hier kann stehen, was passiert, wenn alle Spalten ab M:M ausgeblendet sind.
End Sub

Anzeige
AW: Spalte ausblenden + folgespalten einzeln
17.11.2020 16:54:33
Stefan
@ Bernd: ja das ist nicht so das was ich wollte.
@ Yal: bei deiner Variante gibt er mir einen "Laufzeitfehler 1004 - objektdefinierter Fehler" an bei
"s2 = Not .Cells(1, i + 1).EntireColumn.Hidden"
@ Hendrik: Das ist genau das was ich suchte als Möglichkeit
Damit kann jede Spalte (und dem Spaltenbereich indivduell festlegbar) um den es sich handelt im einzelnen per Buttonklick nacheinander ausgeblendet werden. :-)
Da ich dies anders rum auch machen wollte hatte ich die Argumente "True" & "False" einfach getauscht.
Aber wie schon vermutet fängt er vorne wieder bei M an einzublenden.
Die Einblendungsreihenfolge sollte aber dort anfangen welche zuletzt ausgeblendet wurde.
Bsp: ich habe M - P ausgeblendet und sehe nur noch Q, R S, T, ect.
Und wenn ich auf den Einblenden Button klicke soll er erst Spalte P, dann O & dann N wieder einblendet werden.Ich vermute dies wird nicht so einfach zu bewerkstelligen sein da irgendwie eine Variable fehlt welche mir sagt welche breits ein- bzw. ausgeblendet sind ?!
Anzeige
AW: Spalte ausblenden + folgespalten einzeln
17.11.2020 17:12:17
Yal
Hallo Stefan,
ist der Code in dem Workbook, wo die Tabelle steht?
Einzige Fall, wo diese Fehler vorkommt, ist wenn alle Spalten ab M ausgeblendet sind.
Ändert dafür den 16384 in 16383!
Viel Erfolg
Yal
AW: Spalte ausblenden + folgespalten einzeln
17.11.2020 17:22:44
Stefan
@ Yal: du meinst aber nicht das ich den Code jetzt in das Object Tabelle1 einfügen soll ?
Hab es in einem Modul stehen...
In dem Fall gibt er mir nur eine 400 mit einem großen roten Kreis & X aus
AW: Spalte ausblenden + folgespalten einzeln
17.11.2020 17:53:43
Yal
"In dem Fall gibt er mir nur eine 400 mit einem großen roten Kreis & X aus "
Du meinst damit Fehlernummer 400?
Im Modul ist richitg, aber im Modul in dem Workbook (=ExcelDatei), nicht in einem separaten Workbook.
Poste mal die Datei, wo Du den Fehler bekommst. (XL-Version 2016 ist richtig?)
Anzeige
AW: Spalte ausblenden + folgespalten einzeln
17.11.2020 18:23:15
Stefan
Beispieldatei :
https://www.herber.de/bbs/user/141636.xlsm
wo ich den Laufzeitfehler 1004 erhalte
By the way:
Das Ausblenden Makro funktioniert mit der Variante von Hendrik wie gewünscht.
Allerdings funktioniert das Einblenden Rückwärts in der Form wohl nicht so ganz
Mit deiner Variante könnte man dies aber glaube ich relalisieren, oder ?
AW: Spalte ausblenden + folgespalten einzeln
17.11.2020 18:43:30
Yal
Ok. Zwei Fehler von mir
_ 16384 soll 16383 werden (bereit erwähnt)
_ Hidden = False soll Hidden = True werden
Und eine Verständnis-Fehler: Start-Zustand ist: gar keine Spalte ist ausgeblendet
Public Sub ErsteNichtAusgeblendet_ausblenden()
Dim i, s1, s2
' M = 13
With Worksheets("Tabelle1")
For i = 13 To 16383 '16384
s1 = .Cells(1, i).EntireColumn.Hidden
s2 = Not .Cells(1, i + 1).EntireColumn.Hidden
If s1 And s2 Then
.Cells(1, i + 1).EntireColumn.Hidden = True 'False
Exit Sub
End If
Next i
End With
'Wenn nichts augeblendet ist, soll M ausgeblendet werden
Worksheets("Tabelle1").Range("M1").EntireColumn.Hidden = True
End Sub
Rückwärts sieht sehr ähnlich aus
Public Sub Rueckwaerts()
Dim i, s1, s2
' M = 13
With Worksheets("Tabelle1")
For i = 13 To 16383
s1 = .Cells(1, i).EntireColumn.Hidden
s2 = Not .Cells(1, i + 1).EntireColumn.Hidden
If s1 And s2 Then
.Cells(1, i).EntireColumn.Hidden = False
Exit Sub
End If
Next i
End With
End Sub

Kannst Du die Unterschied sehen?
Viel Erfolg
Yal
Anzeige
AW: Spalte ausblenden + folgespalten einzeln
17.11.2020 19:06:33
Stefan
Ja den Unterschied sehe ich.
Da der Urzustand ja "keine Spalte ausgeblendet" war, konnte auch nicht weitere ausgeblendet werdne. Erst durch den Zusatz nachder Schleife "wenn nicht ausgeblendet ist soll M ausgeblendet werden"
bei +1 war das falsche Argument gesetzt, das ist mir so nicht direkt aufgefallen.
AW: Spalte ausblenden + folgespalten einzeln
18.11.2020 09:47:13
Henrik
Hallo,
oder kürzer (noch mal beide gesammelt):
Sub ShowLastColumn()
Dim objCol As Range
For Each objCol In Range("M:XFD").Columns 'Ggf. Das Ende früher als in Spalte XFD  _
definieren.
If objCol.Hidden = False Then
objCol(0).Hidden = False
Exit Sub
End If
Next
'Hier kann stehen, was passiert, wenn alle Spalten zwischen Spalte M und Spalte XFD  _
eingeblendet sind.
End Sub
Sub HideNextColumn()
Dim objCol As Range
For Each objCol In Range("M:XFD").Columns 'Ggf. Das Ende früher als in Spalte XFD _
definieren.
If objCol.Hidden = False Then
objCol.Hidden = True
Exit Sub
End If
Next
'Hier kann stehen, was passiert, wenn alle Spalten ab M:M ausgeblendet sind.
End Sub

Anzeige
AW: Spalte ausblenden + folgespalten einzeln
17.11.2020 16:38:00
Yal
ach so. Jetzt erst verstanden
Public Sub ErsteNichtAusgeblendet_ausblenden()
Dim i, s1, s2
' M = 13
With Worksheets("Tabelle1")
For i = 13 To 16384
s1 = .Cells(1, i).EntireColumn.Hidden
s2 = Not .Cells(1, i + 1).EntireColumn.Hidden
If s1 And s2 Then
.Cells(1, i + 1).EntireColumn.Hidden = True
Exit Sub
End If
Next i
End With
End Sub
Viel Erfolg
Yal

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige