Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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.
Antworten 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)
Antworten 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.
Antworten 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)
Antworten 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 :)
Antworten 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
Antworten 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?
Antworten 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)
Antworten 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
Antworten 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
Antworten Top


Gehe zu:


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