Thema Datum  Von Nutzer Rating
Antwort
17.06.2020 20:25:05 Face
NotSolved
18.06.2020 20:06:50 Gast87753
NotSolved
19.06.2020 19:51:47 ralf_b
NotSolved
Blau Tabellenblatt mehrmals erstellen und Namen vergeben
19.06.2020 20:53:18 xlKing
NotSolved

Ansicht des Beitrags:
Von:
xlKing
Datum:
19.06.2020 20:53:18
Views:
594
Rating: Antwort:
  Ja
Thema:
Tabellenblatt mehrmals erstellen und Namen vergeben

Hallo Face,

Der Code dazu könnte z.B. so aussehen. Den Namensbereich musst du noch anpassen. 

Sub BlattKopieren()

  Set Namen = Sheets("Tabelle1").Range("B2:B16")
  
  For i = 1 To Sheets("Tabelle1").Range("F9")
    Sheets("Tabelle2").Copy After:=Sheets(Sheets.Count)
    n = Namen.Cells(i)
    
    Do
      If n = "" Then
        n = InputBox("Es ist noch kein Name angegeben. Bitte geben Sie einen Namen ein", , _
        Sheets(Sheets.Count).Name)
      End If
      If Len(n) > 31 Then
        n = InputBox("Der Name " & n & " ist länger als 31 Zeichen, " _
        & "Bitte geben Sie einen kürzeren Namen ein.", , Left(n, 31))
      End If
      If IsIn(n, "\", "/", "?", "*", "[", "]") Then
        n = InputBox("Der Name " & n & " enthält mindestens eines der verbotenen Zeichen: " _
        & "\, /, ?, *, [, ] " & Chr(13) & "Neuer Name ist", , ReplaceN(n))
      End If
      If SheetExists(n) Then
        n = InputBox("Ein Blatt mit dem Namen " & n & " existiert schon. " _
        & "Geben Sie einen anderen Namen ein.")
      End If
    Loop Until n <> "" And Len(n) <= 31 And Not IsIn(n, "\", "/", "?", "*", "[", "]") And Not SheetExists(n)
    Sheets(Sheets.Count).Name = n
  Next i
  
End Sub
Private Function IsIn(ByVal s As String, ParamArray CompareStrings()) As Boolean
  For Each c In CompareStrings
    If InStr(1, s, c) > 0 Then IsIn = True
  Next c
End Function

Private Function ReplaceN(ByVal n As String) As String
  n = Replace(n, "\", "")
  n = Replace(n, "/", "")
  n = Replace(n, "?", "")
  n = Replace(n, "*", "")
  n = Replace(n, "[", "")
  n = Replace(n, "]", "")
  ReplaceN = n
End Function
Private Function SheetExists(ByVal s As String) As Boolean
  On Error Resume Next
  SheetExists = Sheets(s).Name <> "" And Not Sheets(Sheets.Count).Name = s
End Function

Gruß Mr. K.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
17.06.2020 20:25:05 Face
NotSolved
18.06.2020 20:06:50 Gast87753
NotSolved
19.06.2020 19:51:47 ralf_b
NotSolved
Blau Tabellenblatt mehrmals erstellen und Namen vergeben
19.06.2020 20:53:18 xlKing
NotSolved