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

Gültikkeit Datumsformat in meheren Sheets

Gültikkeit Datumsformat in meheren Sheets
Matze,Matthias
Hallo @All,
ich würde gerne eine VBA Lösung von euch Spezialisten in mein Vorhaben einbauen:
Ausgangspunkt ist die Zelle J8 im Sheet "SETUP" deren Inhalt die Jahreszahl enthalten soll.
Für die Sheets Januar bis Dezember möchte ich im Bereich $B$10-$B$40 eine Gültikeit vom 1. bis letzten Tag des jeweiligen Monatsblattes bekommen.
Es könnte auch eine Hilfstabelle eingebaut werden um eventuell mit Dropdowns zu arbeiten.
Bin für jeden Ansatz- oder Lösungsweg zu haben :-) .
Dank vorab ,..
LG Matze

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Gültikkeit Datumsformat in meheren Sheets
13.07.2012 22:25:13
Josef

Hallo Matthias,
ins Klassenmodul von "SETUP"
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim lngIndex As Long, lngDay As Long
  Dim strTmp As String
  
  If Target.Address(0, 0) = "J8" Then
    If IsNumeric(Target) Then
      For lngIndex = 1 To 12
        strTmp = ""
        For lngDay = 1 To Day(DateSerial(Target, lngIndex + 1, 0))
          strTmp = strTmp & Format(DateSerial(Target, lngIndex, lngDay), "dd.MM.yyyy") & ","
        Next
        With Sheets(Format(DateSerial(1, lngIndex, 1), "MMMM")).Range("B10:B40").Validation
          .Delete
          .Add Type:=xlValidateList, _
            AlertStyle:=xlValidAlertStop, _
            Operator:=xlBetween, _
            Formula1:=Left(strTmp, Len(strTmp) - 1)
        End With
      Next
    End If
  End If
  
End Sub



Die Listen werden bei einer Eingabe in J8 (SETUP) erstellt.
« Gruß Sepp »

Anzeige
@Josef - - bei Jahreswechsel will er nicht
13.07.2012 22:40:46
Matze,Matthias
Hallo Josef,
besten und herzlichen Dank für die Codezeilen.
...leider ist bei Jahreswechesl noch ein Wurm drin.
With Sheets(Format(DateSerial(1, lngIndex, 1), "MMMM")).Range("B10:B40").Validation
in dieser Zeile bleibt er stehen.
Matze
AW: @Josef - - bei Jahreswechsel will er nicht
13.07.2012 22:46:10
Josef

Hallo Matthias,
"in dieser Zeile bleibt er stehen."
Das ist keine gute Fehlerbeschreibung, wie lautet die Fehlermeldung?
Wahrscheinlich heißen deine Blätter dann nicht "Januar", "Februar", ...

« Gruß Sepp »

Anzeige
AW: @Josef - - bei Jahreswechsel will er nicht
13.07.2012 23:02:44
Matze,Matthias
Hallo josef,
laufzeitfehler 9 : Index ausserhalb des Bereichs:
Die Blätter sind Januar, Februar; Maerz,.... schon OK so.
lngindex hat den Wert 3
kann es sein das
For lngIndex = 1 To 12 'für die Sheets ist ?
For lngIndex = 2 To sheets.count ' wäre dies nicht besser da SETUP das erste Blatt ist?
Leider kann ich keine Musterdatei hochladen da will er die ExcelEndung nicht
Matze
AW: @Josef - - bei Jahreswechsel will er nicht
13.07.2012 23:17:28
Josef

Hallo Matthias,
März und Maerz ist aber wohl ein Unterschied!
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim lngIndex As Long, lngDay As Long
  Dim strTmp As String
  
  If Target.Address(0, 0) = "J8" Then
    If IsNumeric(Target) Then
      For lngIndex = 1 To 12
        strTmp = ""
        For lngDay = 1 To Day(DateSerial(Target, lngIndex + 1, 0))
          strTmp = strTmp & Format(DateSerial(Target, lngIndex, lngDay), "dd.MM.yyyy") & ","
        Next
        With Sheets(Replace(Format(DateSerial(1, lngIndex, 1), "MMMM"), "ä", "ae")).Range("B10:B40").Validation
          .Delete
          .Add Type:=xlValidateList, _
            AlertStyle:=xlValidAlertStop, _
            Operator:=xlBetween, _
            Formula1:=Left(strTmp, Len(strTmp) - 1)
        End With
      Next
    End If
  End If
  
End Sub


Und 1 to 12 stimmt schon, ist nicht der Tabellenindex sondern der Index für die Monte 1 bis 12.

« Gruß Sepp »

Anzeige
Asche auf mein Haupt - Lol..
13.07.2012 23:24:04
Matze,Matthias
Hallo Josef,
boah wie blind kann man sein,...Ok das war der Verursacher.
Klasse und besten Dank
Lg Matze
AW: @Josef - - bei Jahreswechsel will er nicht
13.07.2012 23:06:11
Matze,Matthias
noch etwas :
Nur im Blatt Januar und Februar sind die Gültigkeiten aktiv, ab Maerz nix.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige