Spalte ausblenden
Hallo,
bräuchte mal Hilfe.
abe einen Urlaubsplaner mit 2 Halbjahren (Jan.-Juni + Juli-Dez.) erstellt. Für das Datum und die Tage habe ich die Formel =DATUM(B1;1;1)und dann +1 benutzt, wobei B1 die Zelle mit dem Jahr (2008) ist. Wenn ich das Jahr ändere, passt sich das Datum auch an, aber das erste Halbjahr geht bis 1.Juli und das 2 Halbjahr beginnt ganz normal mit 1.Juli, so das 2mal der 1 Juli da ist. Wie bekomme ich die Spalte mit dem 1. Juli im 1Halbjahr ausgeblendet, wenn kein Schaltjahr ist? Die Jahreszahl kann über ein Auswahlfeld gewählt werden.
Gruß Knulli
Antwort schreiben
Antwort 1 von Hajo_Zi vom 24.02.2020, 15:26 Options
Hallo Nick,
Wenn(Monat(A1+1)>6;"";A1+1)
Gruß hajo
Antwort 2 von Saarbauer vom 24.02.2020, 15:31 Options
Hallo,
in die entsprechende Zelle folgendes schreiben
=Wenn(hier Adresse der vorhergehenden Zelle=DATUM(B1;6;30) ; "";Adresse der vorhergehenden Zelle+1)
wäre eine Möglichkeit, sonst wären etwas genauere Erläuterungen sinnvoll
Gruß
Helmut
Antwort 3 von Knulli vom 24.02.2020, 23:36 Options
Hallo,
Danke für eure Antworten.
Mit einem Button (Drehfeld) kann ich die Jahreszahl ändern. Wenn ich auf 2009 ändere, steht dann in der letzten Spalte 1.Juli, weil es ja ein Tag weniger ist. In einer extra Spalt steht eine Formel, mit der die Urlaubstage ausgezählt werden.
Deshalb wollte ich die ganze Spalte ausblenden, da die Urlaubstage ja ausgezählt werden, und somit wenn ich nur das Datum ausblende, trotzdem die Spalte wo 1. Juli steht mitgezählt wird, wenn da Urlaub eingetragen wird.
Hatte an einen Code in VBA gedacht, so etwas wie Wenn Spalte GG = 1.Juli blende Spalte GG aus, sonst mache nichts. Habe aber mit VBA keine Erfahrung und bekomme es nicht hin, mit dem was ich so im Netz gefunden habe.
Danke und Gruß
Knulli
Antwort 4 von Saarbauer vom 25.02.2020, 07:28 Options
Hallo,
da wir deine VBA-Code nicht kennen, kann man auch nicht sagen wie dein Problem zu lösen ist.
Es müsste zumindest mit einer IF-Abfrage zu lösen sein, doch deren genauen Aufbau kann man so nicht sagen. Im Prinzip wie meine Wenn()-Abfrage
Gruß
Helmut
Antwort 5 von Knulli vom 25.02.2020, 08:17 Options
Hallo Helmut,
hier mal 2 meiner versuche.
If Range("GG3").Value = "DATUM(B1;7;1)" Then
Rows("GG2:GG56").Hidden = True
End If
End Sub
und
Columns("GG:GG").EntireColumn.Hidden = True
If Cells("GG3") = DATUM(B1;7;1) Then
Columns("GG:GG").EntireColumn.Hidden = False
Exit Sub
End If
End Sub
bei dem ersten Code passiert gar nichts und bei dem zweitem bekomme ich in der 2 Zeile einen Syntaxfehler.
Gruß Knulli
Antwort 6 von M.O. vom 25.02.2020, 08:49 Options
Hallo Knulli,
folgender Code blendet die Spalte GG aus, wenn in GG3 ein Datum mit dem Monat Juli steht:
Sub ausblenden()
If Month(Range("GG3")) = 7 Then Range("GG:GG").Columns.Hidden = True
End Sub
Gruß
M.O.
Antwort 7 von Knulli vom 27.02.2020, 08:17 Options
Hallo M.O.,
das funktioniert auch nicht.
Gruß Knulli
Antwort 8 von M.O. vom 27.02.2020, 09:28 Options
Hallo Knulli,
der Code funktioniert, du musst das Makro natürlich starten bzw. den Code entsprechend in deinen Code für das Drehfeld einbauen.
Ansonsten verweise ich auf Antwort 4: ohne genaue Angaben kann man nicht gezielt helfen.
Gruß
M.O.
Antwort 9 von Knulli vom 03.03.2020, 10:07 Options
Hallo M.O.,
habe es hinbekommen, Spalte wird ausgeblendet. Wie muss der Code erweitert werden, das die Spalte wieder eingeblendet wird, wenn ich auf ein Schaltjahr komme(zurück auf 2008 oder vor auf 2012)? Die Spalte bleibt sonst immer ausgeblendet.
Danke und Gruß
Knulli
Antwort 10 von M.O. vom 03.03.2020, 11:18 Options
Hallo Knulli,
hier der geänderte Code:
Sub ausblenden()
'Ausblenden
If Month(Range("GG3")) = 7 Then Range("GG:GG").Columns.Hidden = True
'Einblenden
If Range("GG:GG").Columns.Hidden = True And Month(Range("GG3")) = 6 Then Range("GG:GG").Columns.Hidden = False
End Sub
Gruß
M.O.
Antwort 11 von Knulli vom 03.03.2020, 14:08 Options
Hallo M.O.
Danke, klappt. Habe eben festgestellt, dass ich noch ein Problem habe.
Wenn ich speichere, wird das Datum des Jahres gespeichert, auf das ich wechsle und nicht das, was eigentlich gespeichert werden soll. Hast Du dafür eine Lösung?
Code:
Private Sub SpinButton1_Change()
'Speicherabfrage
strAnzeige = MsgBox("Urlaubsplan speichern? Daten gehen beim wechseln auf ein neues
Jahr verloren!!!", vbYesNo)
If strAnzeige = vbNo Then
' Blattbereinigung bei Jahreswechsel
Sheets("1.Hj.").Range("H7:GG20").ClearContents
Sheets("1.Hj.").Range("H7:GG20").Interior.ColorIndex = xlNone
Else
ActiveWorkbook.SaveCopyAs Filename:="..\Urlaubsplan" & Range("B1") & "_" & Date & "_" & Format(Time, "hh.mm") & ".xls"
End If
B1 steh für die Jahreszahl, die durch betätigen des Buttons geändert wird. Mein Problem ist, dass erst die Jahreszahl geändert und dann gespeichert wird, aber es soll erst gespeichert und dann das Jahr geändert werden.
Gruß Knulli
Antwort 12 von M.O. vom 03.03.2020, 15:57 Options
Hallo Knulli,
hier mal ein Vorschlag:
In das VBA-Projekt des Arbeitsblatt schreibst du folgenden Code:
Public SBWert As Integer
Private Sub Worksheet_Activate()
SBWert = Range("B1")
End Sub
Hier wird beim Aktivieren des Arbeitsblatts die in B1 stehende
aktuelle Jahreszahl eingelesen. Wichtig ist, dass die Variable
SBWert als Public definiert wird.
Deinen Code für den Spinbotton änderst du wie folgt:
Private Sub SpinButton1_Change()
..
ActiveWorkbook.SaveCopyAs Filename:="..\Urlaubsplan" & [b]SBWert[/b] & "_" & Date & "_" & Format(Time, "hh.mm") & ".xls"
[b]SBWert = SpinButton1.Value[/b]
End If
...
End sub
Gruß
M.O.
Antwort 13 von Knulli vom 03.03.2020, 16:40 Options
Hallo M.O.
Was heißt als Public definieren?
Habe den Code über den Code des Spinbuttons geschrieben und das ActiveWorkbook ersetzt, jetzt wird aber immer unter 2008 gespeichert egal welches Jahr ich wähle und wenn ich das Tabellenblatt dann wieder öffne steht das Jahr auf das ich gewechselt habe und nicht das was gespeichert werden sollte.
Gruß Knulli
Antwort 14 von M.O. vom 04.03.2020, 07:33 Options
Hallo Knulli,
kannst du mal eine Beispielmappe hochladen, z.B.
hier, und den Link posten?
Gruß
M.O.
Antwort 15 von Knulli vom 06.03.2020, 09:24 Options
Hallo M.O.
Habe es noch ein bisschen getestet und es geht jetzt soweit, dass die Tabelle mit der richtigen Jahreszahl gespeichert wird. Wenn ich die gespeicherte Tabelle aber öffne, steht da das Datum von dem darauf folgendem Jahr und der Kalender ist auch von diesem.
Das kommt daher, weil beim betätigen des Buttons die Jahreszahl und der Kalender geändert werden und dann erst gespeichert wird.
Ich bräuchte eine Lösung, wo erst gespeichert wird und dann erst die Jahreszahl und das Datum geändert werden.
Beispielmappe: http://upload.npcfighter.de/files/36/2668/Urlaubsplaner.rar
Gruß Mario
Antwort 16 von M.O. vom 09.03.2020, 17:14 Options
Hallo Mario,
ich habe mal etwas gebastelt. Schau mal
hier nach. Ich hoffe, es funktioniert so, wie du es willst.
Gruß
M.O.