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

Spalten ausblenden

Spalten ausblenden
27.01.2016 12:53:53
Sarah
Hallo,
ich habe schon viel gegooglet und herausgefunden, dass ich das was ich will mit Makros erreichen kann. Leider konnte ich die Lösungen für die Probleme der anderen (das heißt, ich hab eigentlich nur einen vergleichbaren Beitrag gefunden)nicht nachvollziehen und deshalb nicht auf mein Problem anwenden...
Kurz zur Erläuterung:
Ich erstelle einen Übersichtsplan, welcher Mitarbeiter (MA) wann arbeitet. Die MA arbeiten in jeder Abteilung unterschiedlich.
um das ganze jetzt etwas anschaulicher gestalten zu können, will ich gerne, dass die Tage, in der die Abteilung geschlossen ist, ausgeblendet werden.
In meinem Beispiel ist Di, Do, Sa und So geschlossen.
https://www.herber.de/bbs/user/103082.xlsx
Wie kann ich denn jetzt erreichen, dass die jeweiligen Spalten ausgeblendet werden, wenn sich der Monat ändert.
Ich will sie nicht immer manuell ausblenden müssen...
ich hoffe mir kann einer von euch helfen :)
Liebe Grüße
Sarah

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten ausblenden
27.01.2016 13:01:49
ChrisL
Hi Sarah
Sub t()
Dim iSpalte As Byte
Application.ScreenUpdating = False
For iSpalte = 4 To Range("IV3").End(xlToLeft).Column
Select Case WorksheetFunction.Weekday(Cells(3, iSpalte))
Case 7, 1, 3, 5
Columns(iSpalte).Hidden = True
Case Else
Columns(iSpalte).Hidden = False
End Select
Next iSpalte
Application.ScreenUpdating = True
End Sub

cu
Chris

AW: Spalten ausblenden
27.01.2016 14:26:09
Sarah
Hey Chris,
Danke schon mal für den Code! Das funktioniert super :)
Stellt mich aber leider direkt vor das nächste Problem...
Wie schaff ich es denn, dass die Spalten sofort ausgeblendet werden, wenn ich oben den Monat ändere?
Vielleicht geh ich auch falsch vor, aber aktuell muss ich bei jeder Abteilung noch über Alt + F8 ausführen lassen. Das ist bei 7 Tabellenblättern etwas umständlich...
Liebe Grüße
Sarah

Anzeige
AW: Spalten ausblenden
27.01.2016 14:44:37
ChrisL
Hi Sarah
So...
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address(0, 0) = "A1" Then
Dim iSpalte As Byte
With Sh
Application.ScreenUpdating = False
For iSpalte = 4 To .Range("IV3").End(xlToLeft).Column
Select Case WorksheetFunction.Weekday(.Cells(3, iSpalte))
Case 7, 1, 3, 5
.Columns(iSpalte).Hidden = True
Case Else
.Columns(iSpalte).Hidden = False
End Select
Next iSpalte
Application.ScreenUpdating = True
End With
End If
End Sub

Achtung: Code nicht unter Standardmodul einfügen, sondern unter "DieseArbeitsmappe".
cu
Chris

Anzeige
jetzt reagierts nicht mehr :(
27.01.2016 16:00:28
Sarah
Jetzt funktionierts gar nicht mehr O.o
Kommt aber auch keine Fehlermeldung...
Ich bin so vorgegangen:
-Alt + F11
-Strg + R
-Tabellenblatt ausgewählt mit Doppelklick
-Alt + E dann M
-Code eingefügt
-Speichern
-Alt + F4
Auch beim Ausführen finde ich die Tabelle nicht mehr :/
Könnte es auch daran liegen, dass A1 und B1 in den Blättern von 2 bis 7 mit den Zellen A1 und B1 in Blatt 1 verknüpft sind?
So ändern sich Monat und Jahr gleich in allen Tabellen, wenn ich sie in Blatt 1 eingebe.
Standardmodul und Diese Arbietsmappe hab ich gar nicht gefunden auf meiner Maske bim Einfügen...
Vielen Dank für die Hilfe... und sorry, falls ich mich seltendämlich dranstelle :D

Anzeige
AW: jetzt reagierts nicht mehr :(
27.01.2016 16:10:53
ChrisL
Hi Sarah
-Tabellenblatt ausgewählt mit Doppelklick
-Alt + E dann M
Nicht Doppelklick auf Tabelle sondern auf DieseArbeitsmappe. Standardmodul einfügen braucht es dann nicht.
cu
Chris

nochmal von vorn
28.01.2016 10:39:14
vorn
hey nochmal :)
also das funktioniert jetzt soweit, dass das 1. Blatt sich automatisch aktualisiert. Ich hab aber eigentlich 7 Blätter. Die sich alle aktualisieren sollen...
Wahrscheinlich hatte ich mein 1. Beispiel zu sehr vereinfacht....
So solls nachher wirklich aussehen:
https://www.herber.de/bbs/user/103096.xlsx
Am Ende sollen die Tage ausgeblendet werden:
Abteilung A: Sonntag
Abteilung B: Donnerstag, Sonntag
Abteilung C: Montag, Dienstag, Mittwoch, Donnerstag, Samstag, Sonntag
Abteilung D: Montag, Mittwoch, Donnerstag, Sonntag
Abteilung E: Montag, Dienstag, Donnerstag, Sonntag
Abteilung F: Montag, Mittwoch, Freitag, Sonntag
Abteilung G: Dienstag, Donnerstag, Samstag, Sonntag
und das ganze am besten automatisch, sobald in Abteilung A in A1 oder B1 Monat oder Jahr geändert werden...
mit Makros konnte ich die Datei leider nicht hochladen :/
Liebe Grüße
Sarah

Anzeige
AW: nochmal von vorn
28.01.2016 17:56:10
vorn
Hi Sarah
Der Code bezieht sich auf alle Arbeitsblätter.
Was du noch ändern müsstest ist Zelle B1:
If Target.Address(0, 0) = "A1" Or Target.Address(0, 0) = "B1" Then
Ansonsten verstehe ich das Problem nicht, bei mir liefs.
Wenn du Makro verwendest musst du als *.xlsm speichern. Solche Dateien lassen sich auch hochladen.
cu
Chris

AW: nochmal von vorn
29.01.2016 09:29:08
vorn
Hi
Habe es mir nochmals angeschaut und sehe nun das Problem. Aber wie soll das Programm wissen, welche Abteilung an welchen Tage arbeitet? Das müsste man erstmal irgendwo hinterlegen. Direkt im Code ist schlecht, weil sonst musst du den Code x-mal duplizieren.
cu
Chris

Anzeige
Probleme über probleme
29.01.2016 23:17:32
Sarah
Ok, das mit dem B1 füg ich am Montag direkt ein.
Ja... genau da liegt das Problem... ich kann zwar den Code auf jede einzelne Tabelle anpassen und dort hinterlegen, aber automatisch läuft ja dann trotzdem nur das 1. Tabellenblatt ab.
Die anderen Blätter laufen ja auch nicht automatisch, weil ich dort manuell nicht A1 oder B1 ändere. Das läuft ja auch über verknüpfung.
Ich hatte es mit der xlsm Datei probiert, hat aber nicht funktioniert beim hochladen. Kanns am Montag nochmal versuchen :)

Aus die Maus...
01.02.2016 09:43:14
ChrisL
Hi Sarah
So, jetzt wo ich wieder bei der Arbeit bin, habe ich Zeit für Makros :)
https://www.herber.de/bbs/user/103176.xlsm
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "A1" Or Target.Address(0, 0) = "B1" Then
Dim iSpalte As Byte, iiSpalte As Byte, iZeile As Long
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws2 = ThisWorkbook.Worksheets("Übersicht")
For Each ws1 In ThisWorkbook.Worksheets
If ws1.Name  ws2.Name Then
With ws1
Application.ScreenUpdating = False
For iSpalte = 4 To .Range("IV3").End(xlToLeft).Column
If WorksheetFunction.CountIf(ws2.Columns(1), ws1.Name) = 0 Then
MsgBox "Die Abteilung " & ws1.Name & " fehlt auf dem Arbeitsblatt " & ws2. _
Name
Else
iZeile = Application.Match(ws1.Name, ws2.Columns(1), 0)
iiSpalte = Application.Match(WorksheetFunction.Weekday(ws1.Cells(3, iSpalte) _
), ws2.Rows(2), 0)
If ws2.Cells(iZeile, iiSpalte) = "x" Then
ws1.Columns(iSpalte).Hidden = False
Else
ws1.Columns(iSpalte).Hidden = True
End If
End If
Next iSpalte
Application.ScreenUpdating = True
End With
End If
Next ws1
End If
End Sub

Blatt Übersicht trägst du ein, wann die einzelnen Abteilungen arbeiten.
Beachte: Code muss jetzt ins Modul von "Tabelle1" resp. "AbteilungA" (nicht Standardmodul und neu auch nicht unter DieseArbeitsmappe).
Viel Spass
Chris

Anzeige
AW: Aus die Maus...
01.02.2016 09:47:39
ChrisL
Mist, bereits die erste Korrektur:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "A1" Or Target.Address(0, 0) = "B1" Then
Dim iSpalte As Byte, iiSpalte As Byte, iZeile As Long
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws2 = ThisWorkbook.Worksheets("Übersicht")
For Each ws1 In ThisWorkbook.Worksheets
If ws1.Name  ws2.Name Then
With ws1
Application.ScreenUpdating = False
For iSpalte = 4 To 40
If WorksheetFunction.CountIf(ws2.Columns(1), .Name) = 0 Then
MsgBox "Die Abteilung " & ws1.Name & " fehlt auf dem Arbeitsblatt " & ws2. _
Name
Else
iZeile = Application.Match(.Name, ws2.Columns(1), 0)
iiSpalte = Application.Match(WorksheetFunction.Weekday(.Cells(3, iSpalte)),  _
ws2.Rows(2), 0)
If ws2.Cells(iZeile, iiSpalte) = "x" Then
ws1.Columns(iSpalte).Hidden = False
Else
ws1.Columns(iSpalte).Hidden = True
End If
End If
Next iSpalte
Application.ScreenUpdating = True
End With
End If
Next ws1
End If
End Sub

Anzeige
AW: Aus die Maus...
02.02.2016 11:13:36
Sarah
Es ist perfekt O.o
Tausend Dank! Genauso hab ichs mir gewünscht ♥.♥
Liebe Grüße und viel Spaß beim Arbeiten
Sarah

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige