Datum über Inputbox ohne/mit Sonderzeichen
#1
Hallo zusammen
Ich bin momentan in der Arbeit und kann momentan den richtigen  Code nicht teilen. Ich habe aber den Code im Netz gefunden, den ich mir zurechtgeschnitzt habe
Code:
Sub BlattKopieren()
    Dim blnFalsch As Boolean
    Dim strName As String
    Dim arrFalsch()
    Dim bytFalsch As Byte
    arrFalsch = Array("*", "[", "]", "/", "\", "?")
    strName = InputBox("Name des neuen Blatts:", "Blatt benennen")
    If strName = "" Then
        MsgBox "Leider wurde kein Blattname eingetragen!"
        blnFalsch = True
    Else
        If IsError(Evaluate(strName & "!A1")) Then
            If Len(strName) > 31 Then
                MsgBox "Maximal 31 Zeichen erlaubt"
                blnFalsch = True
            Else
                For bytFalsch = 0 To 5
                    If InStr(strName, arrFalsch(bytFalsch)) > 0 Then
                        MsgBox "Unerlaubte Zeichen enthalten"
                        blnFalsch = True
                        Exit For
                    End If
                Next bytFalsch
            End If
        Else
            MsgBox "Tabelle schon vorhanden"
            blnFalsch = True
        End If
    End If
    If blnFalsch = False Then
        Sheets("Tabelle1").Copy After:=Sheets("Tabelle1")
        ActiveSheet.Name = strName
        ActiveSheet.Range("C3") = strName
        MsgBox "Blatt erfolgreich kopiert!"
    End If
End Sub


Vielleicht kann mir so jemand helfen.
Über einen Button auf einem Arbeitsblatt kopiere ich das Blatt und über die InputBox benenne  ich das Blatt..immer als Datum ohne Sonderzeichen. Das heisst, das Blatt heisst dann z.B.:  1102 (statt 11.02). Das neue Blatt hat immer einen Datumsnamen
Jetzt kommt mein Problem
Ich will über dieselbe InputBox in die Zelle A1 das Datum 11.02 oder 11/02 (oder wie auch immer das neue Arbeitsblatt heisst) eintragen. Mein Plan wäre, dass man beim Eintrag über die inputbox in die Zelle A1 den Namen des Arbeitsblatts einträgt und nach der 2.Stelle ein "/" einträgt.. die Idee wäre ja gut, nur weiss ich nicht wie der code dafür lauten soll
Ich wäre auch dankbar für eine Andere Idee.
Danke an alle
Michael
Antworten Top
#2
Hallo

interessanter Code aus dem Internet!  Wenn du ihn dir bitte mal ganz genau anschaust ist die Lösung doch klar und deutlich sichtbar!

Sorry...  aber im Array wird das "/" Zeichen als nicht erlaubt ausgeschlossen!  Das musst du natürlich löschen!  Und die For Next Schleife auf 4 setzen.
Das sollte schon alles sein.  Jetzt kannst du in der InputBox das "/" Zeichen fürs Datum benutzen.  Probier es bitte mal aus.

mfg Gast 123
Antworten Top
#3
(04.11.2021, 20:44)Eizi100 schrieb: Mein Plan wäre, dass man beim Eintrag über die inputbox in die Zelle A1 den Namen des Arbeitsblatts einträgt und nach der 2.Stelle ein "/" einträgt.

Hallo Michael, 19 

wenn es immer 4stellig eingegeben wird, dann so: 21 
Code:
'........
Sheets("Tabelle1").Copy After:=Sheets("Tabelle1")
With ActiveSheet
    .Name = strName
    .Range("A1").NumberFormat = "@"
    .Range("A1").Value = Left(strName, 2) & "/" & Mid(strName, 3, 99)
End With
MsgBox "Blatt erfolgreich kopiert!"
'........
[-] Folgende(r) 1 Nutzer sagt Danke an Gast für diesen Beitrag:
  • Eizi100
Antworten Top
#4
Danke für eure Hilfe
Ich muss mir leider diese Sachen vom Internet klauen, weil ich in VBA eine Pfeife bin..
Lg 
Michael

Das mit dem "/" ist leider das Problem. Der Name für das TabellenBlatt akzeptiert keine "/" (Im Reiter)
LG
Michael
Antworten Top
#5
Hallo


Zitat:Der Name für das TabellenBlatt akzeptiert keine "/" (Im Reiter


Da war mein Tipp leider Müll.  Sorry, kommt davon wenn man es nicht selbst praktisch testet und überprüft.  Ich kann damit leben.

mfg  Gast 123
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • Eizi100
Antworten Top
#6
Ich bin trotzdem sehr dankbar, dass mir jemand hilft bzw sich Gedanken über meine Probleme macht

Ich hänge mal die fertige Datei an. Der Code ist zwar nicht schön aber er funktioniert.

PHP-Code:
.Name NeuerName
    
.Range("As1").NumberFormat "@"
    .Range("As1").Value Left(NeuerName2) & "/" Mid(NeuerName399)
    .Range("As1").NumberFormat "dd.mm.yyyy" 



Ich musste das mit dem NumberFormat einbauen, damit bei manueller Eingabe das als Datum erkannt wird.
Leider trägt mir die Inputbox das als Text ein. Ich bis jetzt noch nicht dahintergekommen wie ich das bewerkstelligen soll, damit mir ein "/" eingetragen wird und das auch noch als Datum erkannt wird. 
LG
Michael


Angehängte Dateien
.xlsm   ET Druckvorlage 2022 .xlsm (Größe: 1,11 MB / Downloads: 2)
Antworten Top
#7
(06.11.2021, 11:36)Eizi100 schrieb: Ich musste das mit dem NumberFormat einbauen, damit bei manueller Eingabe das als Datum erkannt wird.


Hallo Michael, 19 

schreibe es mal so: 21
Code:
    .Range("AS1").NumberFormat = "dd\/mm"
    .Range("AS1").Value = Left(NeuerName, 2) & "/" & Mid(NeuerName, 3, 99)
End With
[-] Folgende(r) 1 Nutzer sagt Danke an Gast für diesen Beitrag:
  • Eizi100
Antworten Top
#8
OMG 

Danke. Wieder mal der Beweis dass ihr echt der Wahnsinn seit. Wie kommt man nur auf sowas?

Danke für eure Hilfe

LG
Michael
Antworten Top
#9
(06.11.2021, 13:45)Eizi100 schrieb: Wie kommt man nur auf sowas?

Hallo Michael, 19 

z. B. mit dem Makrorekorder. Eine Zelle anklicken - Makrorekorder anwerfen - Benutzerdefiniertes Format - bei Typ "TT/MM" - Makrorekorder beenden - Code anschauen. 21
[-] Folgende(r) 1 Nutzer sagt Danke an Gast für diesen Beitrag:
  • Eizi100
Antworten Top
#10
Musste noch was abändern
Der Code erkannte das Datum nicht richtig. Aber jetzt klappt es. Dank eurer Hilfe
Code:
  .Name = NeuerName
  .Range("AS1").NumberFormat = "dd\/mm"
    .Range("AS1").Value = CDate(Left(NeuerName, 2) & "/" & Mid(NeuerName, 3, 99))
    .Range("As1").NumberFormat = "ddd.dd.mm.yyyy"
Antworten Top


Gehe zu:


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