Makro vordefinierte Spalten einblenden
#1
Hallo,
ich habe eine Tabelle mit 100 Spalten.
Um es übersichtlicher zu gestalten, habe ich 80 Spalten ausgeblendet und möchte nun per Schaltfläche immer die nächsten 4 Spalten einfügen.
Wie geht das?
Ich hoffe Ihr könnt mir helfen.

Als versuch habe ich immer den nächsten 4 Spalten einen Namen definiert, vielleicht gibt es hierüber eine Möglichkeit den "Namen" einzublenden.
Top
#2
Hallöchen,

Zitat:Als versuch habe ich immer den nächsten 4 Spalten einen Namen definiert

Wie hast Du das denn gemacht? VBA oder Excel4? Wenn ich in die Spalte AC klicke, ist beim Namen AD:AG hinterlegt bzw. Ergebnis der Excel4 - Funktion?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
Hallo,
ich habe beispielsweise die Spalten A:D markiert und im Namensfeld den Namen "Test" eingegeben.

Sub Test()
    Application.Goto Reference:="Test"
    Selection.EntireColumn.Hidden = False
End Sub


Jetzt blendet er mir die 4 Spalten ein, das funktioniert auch.
Jedoch möchte ich das nicht für 80 weitere Spalten machen, und suche daher einen Automatismus oder eine Msg-Box, die das übernimmt.
Top
#4
Hallöchen,

ich schreibs mal anders. Erkennst Du die nächsten 4 Spalten anhand der Spalte der Zelle, die aktiv ist?
Wenn ich z.B. in A1 bin schaut das Programm nur in B, C, D und E und blendet diese ein? Ist z.B. nur E ausgeblendet, würde auch nur E eingeblendet und nicht noch in F usw. geschaut?

Oder, Zusatzfrage, soll das Programm automatisch schauen, wo die erste ausgeblendete Spalte ist und dann diese und die folgenden 3 Spalten einblenden?
Wenn ich also in A bin und die ausgeblendeten Spalten in E beginnen, wird E,F,G und H eingeblendet?

Oder, kann der Fall eintreten dass mal zwischen zwei eingeblendeten Spaten weniger als 4 Spalten ausgeblendet sind? Soll das Programm dann nachschauen, ob weitere Spalten ausgeblendet sind und diese dann einblenden?
Es sind z.B. die Spalten E, F, X und Z ausgeblendet. Soll das Programm dann diese 4 einblenden oder nur in E,F,G und H prüfen und reagieren?


und ein Hinweis:

Du kannst in einer Schleife auch prüfen, ob Hidden gesetzt ist. Dann nimmst Du noch einen Zähler, um die Anzahl der eingeblendeten Spalten zu prüfen. Im Prinzip so:

Code:
For Icnt=1 to Columns.Count
'pruefen, ob Spalte ausgebelndet ist
If  Cells(1,iCnt).EntireColumn.Hidden = True Then
  kCnt=kCnt+1 'Spaltenzaehler hochsetzen
  Cells(1,iCnt).EntireColumn.Hidden = False 'Spalte einblenden
  If kCnt=4 Then Exit For 'Bei Spaltenzaehler 4 Schleife verlassen
'Ende pruefen, ob Spalte ausgebelndet ist
End If
Next
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#5
Zitat:Oder, Zusatzfrage, soll das Programm automatisch schauen, wo die erste ausgeblendete Spalte ist und dann diese und die folgenden 3 Spalten einblenden?

Wenn ich also in A bin und die ausgeblendeten Spalten in E beginnen, wird E,F,G und H eingeblendet?
 
genau das ist mein Wunsch :)
Top
#6
Hallöchen,

dann geht es kürzer Smile

Code:
Sub einblenden()
Dim iCnt%
For iCnt = 1 To Columns.Count
  'pruefen, ob Spalte ausgebelndet ist
  If Cells(1, iCnt).EntireColumn.Hidden = True Then
    Cells(1, iCnt).Resize(1, 4).EntireColumn.Hidden = False '4 Spalten einblenden
    Exit For 'Schleife verlassen
  'Ende pruefen, ob Spalte ausgebelndet ist
  End If
Next
End Sub
.      \\\|///      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:
  • tp93wtk
Top
#7
Genial, tausend Dank, genau das was ich gesucht habe :)
Kannst du mir das auch noch für Zeilen umschreiben? Dass jeweils nur die nächste ausgeblendete Zeile eingeblendet wird?
Top
#8
Hallöchen,

dann
- ersetze einfach Column durch Row (beachte die "s" am Wortende bleiben)
- ersetze % durch &
- lösche ".Resize(1, 4)"
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#9
Sub einblendenZeile()
Dim iCnt&
For iCnt = 1 To Rows.Count
  If Cells(1, iCnt).EntireRow.Hidden = True Then
    Cells(1, iCnt).EntireRow.Hidden = False
    Exit For
  End If
Next
End Sub


Hab den Code angepasst, allerdings läuft er nicht Undecided
Top
#10
Hi,

sorry,

musst bei Cells ... noch die beiden Klammerinhalte vertauschen. Der Schleifenzähler ist dann an erster Stelle und die 1 an zweiter Smile

Cells(iCnt, 1)
.      \\\|///      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:
  • tp93wtk
Top


Gehe zu:


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