Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Combobox im Format Datum

Combobox im Format Datum
09.09.2014 12:37:14
Andreas
Hallo Forum,
mit nachfolgendem Code lege ich nach Comboboxauswahl eine Kopie des aktiven Blattes an. Als Blattname wird der Comboboxinhalt genutzt. Außerdem wird der Comboboxinhalt noch in Zelle A1 des neuen Blattes geschrieben.
Allerdings soll das neue Blatt im Datumsformat 09.09.2014 benannt werden. Über
Private Sub ComboBox1_Change() ComboBox1.Value = Format(ComboBox1.Value, ("dd.mm.yyyy")) End Sub funktioniert es nicht, da wird gar kein Blatt angelegt (kopiert).
Kann mir bitte Jemand helfen.

Option Explicit
Private Sub CommandButton1_Click()
Dim wks As Worksheet
Dim BlattName As String
Dim MyBool As Boolean
Dim NewTabelName As String
If ComboBox1.ListIndex > -1 Then
'Neuen TabellenName aus Combobox holen und merken
NewTabelName = ComboBox1.Value
BlattName = ComboBox1.Value
'Prüfe ob Blattname schon vorhanden ist
For Each wks In ThisWorkbook.Worksheets
If wks.Name = BlattName Then
MyBool = True
Exit For
End If
Next
If Not MyBool Then
'Tabelle kopieren und hinter der letzten Tabelle einf?gen
ActiveSheet.Copy After:=Sheets(Sheets.Count)
'der neuen Tabelle den Name geben
Sheets(Sheets.Count).Name = NewTabelName
With ActiveSheet.Range("A1")
.NumberFormat = "dd"
.Range("A1").Value = ComboBox1.Value
End With
Else
MsgBox "Das Blatt [" & BlattName & "] ist schon vorhanden", vbInformation
End If
End If
End Sub
Private Sub UserForm_Initialize()
With Me.ComboBox1
.RowSource = "Userform!A3:A66"
.ListIndex = -1
End With
End Sub

Danke fürs lesen und die Hilfe!
mfg, Andreas

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Combobox im Format Datum
09.09.2014 12:59:47
Rudi
Hallo,
Comboboxen enthalten immer Text.
versuchs mal mit
ComboBox1.Value = Format(CDate(ComboBox1.Value), "dd.mm.yyyy")
Gruß
Rudi

AW: Combobox im Format Datum
09.09.2014 13:11:01
Andreas
Hallo Rudi,
danke für die schnelle Antwort. Funktioniert leider nicht. Habe deinen Code in "Private Sub ComboBox1_Change()" eingefügt.
Der untere Code
Private Sub CommandButton1_Click()
funktioniert nur, wenn ich das "ComboBox1_Change()" - Ereignis komplett auskommentiere. Auch bei deiner Variante keine Änderung.
mfg, Andreas

Anzeige
was steht denn in "Userform!A3:A66" ?
09.09.2014 13:04:42
Matthias
Hallo
Übrigens, das ist nicht nötig:

With ActiveSheet.Range("A1")
.NumberFormat = "dd"
.Range("A1").Value = ComboBox1.Value
End With
wenn schon With dann konsequent.

With ActiveSheet.Range("A1")
.NumberFormat = "dd"
.Value = ComboBox1.Value
End With



In meinem Test wurde das Datum korrekt als Blattname gesetzt.
Was steht denn in "Userform!A3:A66" ?
Gruß Matthias

Anzeige
AW: was steht denn in "Userform!A3:A66" ?
09.09.2014 13:15:28
Andreas
Hallo Matthias,
danke für die schnelle Antwort. In Zelle A3 steht die Funktion:

=HEUTE()

und in den anderen Zellen die Formel:

{=A3+KKLEINSTE(WENN((WOCHENTAG(A3+(ZEILE(INDIREKT("1:"&1*9))-1))
mfg, Andreas

Anzeige
#Zahl!
09.09.2014 13:31:21
Matthias
Hallo
Wenn ich Deine Formeln so eingebe sieht der Rest unter A3 so aus:
 A
309.09.2014
4#ZAHL!

Formeln der Tabelle
ZelleFormel
A3=HEUTE()
A4{=A3+KKLEINSTE(WENN((WOCHENTAG(A3+(ZEILE(INDIREKT("1:"&1*9))-1))<6)*ISTNV(VERGLEICH(A3+(ZEILE(INDIREKT("1:"&1*9)));Feiertage;0));ZEILE(INDIREKT("1:"&1*9)));1)}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Matthias

Anzeige
AW: #Zahl!
09.09.2014 13:40:49
Andreas
Hallo Matthias,
für die Formel in A4 wird noch der Bereich "Feiertage" benötigt. Ein Zellbereich in dem die Feiertage des Jahres (tt.mm.jj) aufgelistet sind und über Namensmanager der Bereichsname "Feiertage" zugewiesen wird.
mfg, Andreas

keine Probleme !
09.09.2014 14:06:02
Matthias
Hallo
Ich kann die Blätter erstellen, ohne Fehler.
Was genau geht denn bei Dir nicht?
Gruß Matthias

Anzeige
AW: keine Probleme !
09.09.2014 14:15:34
Andreas
Hallo Matthias,
bei mir wird nach Auswahl des Datums in der Combobox der Wert als fortlaufende Zahl (also die Zahl des Datums) angezeigt. Das Tabellenblatt wird dann auch mit der fortlaufenden Zahl des Datums benannt.
mfg, Andreas
https://www.herber.de/bbs/user/92547.xlsm

Anzeige
Dein Problem ist erkannt.
09.09.2014 14:41:38
Matthias
Hallo
Weil der ComboBox1.ListIndex -1 ist.
Somit springt der Code sofort aufs End IF
Da Du RowSource benutzt will die Box exakt einen Wert daraus haben sonst ist der ListIndex -1
https://www.herber.de/bbs/user/92549.xlsm
Gruß Matthias

Anzeige
AW: Dein Problem ist erkannt.
09.09.2014 14:51:33
Andreas
Hallo Matthias,
vielen Dank für deine Hilfe und Mühe! Jetzt klappt es super.
Nen schönen Tag noch.
mfg, Andreas

Danke für die Rückmeldung :-) owT
09.09.2014 14:53:08
Matthias
;
Anzeige

Infobox / Tutorial

Combobox im Format Datum für Excel


Schritt-für-Schritt-Anleitung

Um eine Combobox in Excel zu erstellen, die das Datum im Format dd.mm.yyyy anzeigt und ein neues Blatt basierend auf der Auswahl anlegt, folge diesen Schritten:

  1. Füge eine UserForm hinzu:

    • Öffne den VBA-Editor mit ALT + F11.
    • Klicke auf Einfügen > UserForm.
  2. Erstelle eine Combobox und einen Button:

    • Ziehe eine Combobox (ComboBox1) und einen Button (CommandButton1) auf die UserForm.
  3. Füge den folgenden VBA-Code ein:

Option Explicit

Private Sub UserForm_Initialize()
    With Me.ComboBox1
        .RowSource = "Userform!A3:A66"
        .ListIndex = -1
    End With
End Sub

Private Sub CommandButton1_Click()
    Dim wks As Worksheet
    Dim BlattName As String
    Dim MyBool As Boolean
    Dim NewTabelName As String

    If ComboBox1.ListIndex > -1 Then
        NewTabelName = Format(CDate(ComboBox1.Value), "dd.mm.yyyy")

        ' Prüfe ob Blattname schon vorhanden ist
        For Each wks In ThisWorkbook.Worksheets
            If wks.Name = NewTabelName Then
                MyBool = True
                Exit For
            End If
        Next

        If Not MyBool Then
            ' Tabelle kopieren und hinter der letzten Tabelle einfügen
            ActiveSheet.Copy After:=Sheets(Sheets.Count)
            ' Der neuen Tabelle den Namen geben
            Sheets(Sheets.Count).Name = NewTabelName
            With Sheets(Sheets.Count).Range("A1")
                .NumberFormat = "dd.mm.yyyy"
                .Value = NewTabelName
            End With
        Else
            MsgBox "Das Blatt [" & NewTabelName & "] ist schon vorhanden", vbInformation
        End If
    End If
End Sub
  1. Teste die UserForm:
    • Führe die UserForm aus und wähle ein Datum aus der Combobox aus. Klicke auf den Button, um ein neues Blatt zu erstellen.

Häufige Fehler und Lösungen

Problem: Das Blatt wird nicht erstellt oder zeigt einen Fehler an.
Lösung: Stelle sicher, dass die Combobox korrekt mit Werten gefüllt ist und dass der ListIndex nicht -1 ist. Überprüfe, ob die Daten in Userform!A3:A66 korrekt sind.

Problem: Der Blattname wird als fortlaufende Zahl angezeigt.
Lösung: Verwende den Format-Befehl wie im obigen Code gezeigt, um das Datum korrekt zu formatieren.


Alternative Methoden

Eine alternative Methode ist die Verwendung von Datenvalidierung in Excel, um eine Dropdown-Liste einzufügen und die Auswahl in einer Zelle zu speichern. Dies kann jedoch weniger flexibel sein, wenn es darum geht, neue Blätter zu erstellen.


Praktische Beispiele

Wenn du beispielsweise die folgenden Daten in Userform!A3:A66 hast:

A
09.09.2023
10.09.2023
11.09.2023

Wenn du 09.09.2023 auswählst und auf den Button klickst, wird ein neues Blatt mit dem Namen 09.09.2023 erstellt und in Zelle A1 wird ebenfalls 09.09.2023 eingetragen.


Tipps für Profis

  • Verwende die CDate-Funktion, um sicherzustellen, dass der Wert der Combobox korrekt als Datum interpretiert wird.
  • Achte darauf, dass die Formate in Excel und VBA übereinstimmen, um unerwartete Fehler zu vermeiden.
  • Teste die UserForm in verschiedenen Excel-Versionen, um sicherzustellen, dass sie überall funktioniert.

FAQ: Häufige Fragen

1. Warum wird der Wert in der Combobox nicht als Datum erkannt?
Das liegt daran, dass Comboboxen standardmäßig Text speichern. Verwende die CDate-Funktion, um den Wert in ein Datum zu konvertieren.

2. Wie kann ich sicherstellen, dass das Blatt nicht schon existiert?
Die Schleife im Code überprüft bereits, ob ein Blatt mit dem gewünschten Namen existiert. Wenn ja, wird eine Nachricht angezeigt.

3. Was ist die korrekte Formatierung für das Datum?
Verwende die Formatierung dd.mm.yyyy, um sicherzustellen, dass das Datum im gewünschten Format angezeigt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige