Clever-Excel-Forum

Normale Version: Makro vordefinierte Spalten einblenden
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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.
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?
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.
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
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 :)
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
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?
Hallöchen,

dann
- ersetze einfach Column durch Row (beachte die "s" am Wortende bleiben)
- ersetze % durch &
- lösche ".Resize(1, 4)"
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
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)
Seiten: 1 2