Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
752to756
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
752to756
752to756
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Sheets.Name = Sheets.Range("A1")

Sheets.Name = Sheets.Range("A1")
15.04.2006 14:59:33
Thomas
hallo,
möchte ein makro machen, es soll von tabelle1 in die tabelle gewechselt werden wie der name in celle A1 steht.
wie macht man das?
gruß thomas

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sheets.Name = Sheets.Range("A1")
15.04.2006 15:03:02
Nepumuk
Hallo Thomas,
wie kommt der Name in die Zelle, oder steht der da schon drin? Mit welchem Ereignis willst du das Makro auslösen?
Gruß
Nepumuk

AW: Sheets.Name = Sheets.Range("A1")
15.04.2006 15:23:07
Thomas
also mit den oberen button erstelle ich eine copy von tabelle disziplin.
mit den zweiten button lese ich alle tabellen aus und bei ok wird der name in a1 geschrieben und dann soll ins die ausgelesene und in a1 geschriebene tabelle gewechselt werden.
siehe beispiel
https://www.herber.de/bbs/user/32903.xls
AW: Sheets.Name = Sheets.Range("A1")
15.04.2006 16:24:12
Thomas
hallo nepumuk,
danke klappt super, ich habe keine ahnung von excel und mache es kompliziert.
nun habe ich eine frage kannst du eine prüfung einbauen das man beim distiplin erstellen nicht einen namen doppelt benutzt, sonst kommt debuggen.
gruß thomas
AW: Sheets.Name = Sheets.Range("A1")
15.04.2006 16:34:39
Nepumuk
Hallo Thomas,
null Problemo:
Private Sub CommandButton1_Click()
    Dim objSheet As Object
    Dim blnFound As Boolean
    For Each objSheet In ThisWorkbook.Sheets
        If objSheet.Name = TextBox1.Value Then
            blnFound = True
            Exit For
        End If
    Next
    If Not blnFound Then
        With Application
            .DisplayAlerts = False
            .ScreenUpdating = False
        End With
        Worksheets("Disziplin").Copy After:=Worksheets(2)
        ActiveSheet.Name = TextBox1.Value
        Worksheets("Menüe").Select
        With Application
            .DisplayAlerts = True
            .ScreenUpdating = True
        End With
        Unload Me
    Else
        MsgBox "Der Name ''" & TextBox1.Value & "'' ist schon vergeben." & vbLf & _
            "Bitte geben Sie einen anderen Namen ein.", vbExclamation, "Hinweis"
        With TextBox1
            .SelStart = 0
            .SelLength = .TextLength
            .SetFocus
        End With
    End If
End Sub

Noch eine Frage, würde es dir große Schwierigkeiten bereiten die Groß- und Kleinschreibung zu verwenden? Texte lassen sich so leichter lesen. :-)
Gruß
Nepumuk

Anzeige
AW: Sheets.Name = Sheets.Range("A1")
15.04.2006 17:52:53
Thomas
Hallo Nepumuk,
wieder Danke, habe aber noch ein Problem und zwar wenn man nichts eingibt kommt auch diese Fehlermeldung. Kannst Du bitte das noch erledigen?
Gruß Thomas
AW: Sheets.Name = Sheets.Range("A1")
15.04.2006 18:12:20
Nepumuk
Hallo Thomas,
logo:
Private Sub CommandButton1_Click()
    Dim objSheet As Object
    Dim blnFound As Boolean
    TextBox1.Value = Trim$(TextBox1.Value)
    If TextBox1.Value <> "" Then
        For Each objSheet In ThisWorkbook.Sheets
            If objSheet.Name = TextBox1.Value Then
                blnFound = True
                Exit For
            End If
        Next
        If Not blnFound Then
            With Application
                .DisplayAlerts = False
                .ScreenUpdating = False
            End With
            Worksheets("Disziplin").Copy After:=Worksheets(2)
            ActiveSheet.Name = TextBox1.Value
            Worksheets("Menüe").Select
            With Application
                .DisplayAlerts = True
                .ScreenUpdating = True
            End With
            Unload Me
        Else
            MsgBox "Der Name ''" & TextBox1.Value & "'' ist schon vergeben." & vbLf & _
                "Bitte geben Sie einen anderen Namen ein.", vbExclamation, "Hinweis"
            With TextBox1
                .SelStart = 0
                .SelLength = .TextLength
                .SetFocus
            End With
        End If
    Else
        MsgBox "Sie haben keinen Namen eingegeben.", vbExclamation, "Hinweis"
        TextBox1.SetFocus
    End If
End Sub

Gruß
Nepumuk

Anzeige
AW: Sheets.Name = Sheets.Range("A1")
15.04.2006 18:23:02
K.Rola
Hallo Nepumuk,
frohes Eiersuchen.
Vielleicht den Namen noch auf Gültigkeit prüfen, max. 31 Zeichen und verbotene Zeichen?
Gruß K.Rola
AW: Sheets.Name = Sheets.Range("A1")
15.04.2006 19:13:37
Nepumuk
Liebste K.Rola,
bei mir gibt's heuer keine Eier oder Naschwerk. Ich bin auf Diät!
Du hast ja wieder mal soooooo Recht. Gut so?
Private Sub CommandButton1_Click()
    Dim objSheet As Object, objRegEx As Object, objMatch As Object
    Dim blnFound As Boolean
    TextBox1.Value = Trim$(TextBox1.Value)
    If TextBox1.Value <> "" Then
        For Each objSheet In ThisWorkbook.Sheets
            If objSheet.Name = TextBox1.Value Then
                blnFound = True
                Exit For
            End If
        Next
        If Not blnFound Then
            Set objRegEx = CreateObject("vbscript.regexp")
            With objRegEx
                .Global = True
                .Pattern = "^[^\/\\\:\*\?\[\]]{2,31}$"
                .IgnoreCase = True
                Set objMatch = .Execute(TextBox1.Value)
            End With
            If objMatch.Count > 0 Then
                With Application
                    .DisplayAlerts = False
                    .ScreenUpdating = False
                End With
                Worksheets("Disziplin").Copy After:=Worksheets(2)
                ActiveSheet.Name = TextBox1.Value
                Worksheets("Menüe").Select
                With Application
                    .DisplayAlerts = True
                    .ScreenUpdating = True
                End With
                Unload Me
            Else
                MsgBox "Ihre Eingabe enthält ungültige Zeichen wie * : ? \ / [ ]" & vbLf & _
                    "Bitte geben Sie einen anderen Namen ein.", vbExclamation, "Hinweis"
                With TextBox1
                    .SelStart = 0
                    .SelLength = .TextLength
                    .SetFocus
                End With
            End If
        Else
            MsgBox "Der Name ''" & TextBox1.Value & "'' ist schon vergeben." & vbLf & _
                "Bitte geben Sie einen anderen Namen ein.", vbExclamation, "Hinweis"
            With TextBox1
                .SelStart = 0
                .SelLength = .TextLength
                .SetFocus
            End With
        End If
    Else
        MsgBox "Sie haben keinen Namen eingegeben.", vbExclamation, "Hinweis"
        TextBox1.SetFocus
    End If
    Set objRegEx = Nothing
    Set objMatch = Nothing
End Sub

Gruß
Nepumuk

Anzeige
Ein Slash zuviel
15.04.2006 19:16:40
Nepumuk
Der Doppelpunkt ist ja kein Metazeichen. Ich Dussel.
So ist's richtig:
Private Sub CommandButton1_Click()
    Dim objSheet As Object, objRegEx As Object, objMatch As Object
    Dim blnFound As Boolean
    TextBox1.Value = Trim$(TextBox1.Value)
    If TextBox1.Value <> "" Then
        For Each objSheet In ThisWorkbook.Sheets
            If objSheet.Name = TextBox1.Value Then
                blnFound = True
                Exit For
            End If
        Next
        If Not blnFound Then
            Set objRegEx = CreateObject("vbscript.regexp")
            With objRegEx
                .Global = True
                .Pattern = "^[^\/\\:\*\?\[\]]{2,31}$"
                .IgnoreCase = True
                Set objMatch = .Execute(TextBox1.Value)
            End With
            If objMatch.Count > 0 Then
                With Application
                    .DisplayAlerts = False
                    .ScreenUpdating = False
                End With
                Worksheets("Disziplin").Copy After:=Worksheets(2)
                ActiveSheet.Name = TextBox1.Value
                Worksheets("Menüe").Select
                With Application
                    .DisplayAlerts = True
                    .ScreenUpdating = True
                End With
                Unload Me
            Else
                MsgBox "Ihre Eingabe enthält ungültige Zeichen wie * : ? \ / [ ]" & vbLf & _
                    "Bitte geben Sie einen anderen Namen ein.", vbExclamation, "Hinweis"
                With TextBox1
                    .SelStart = 0
                    .SelLength = .TextLength
                    .SetFocus
                End With
            End If
        Else
            MsgBox "Der Name ''" & TextBox1.Value & "'' ist schon vergeben." & vbLf & _
                "Bitte geben Sie einen anderen Namen ein.", vbExclamation, "Hinweis"
            With TextBox1
                .SelStart = 0
                .SelLength = .TextLength
                .SetFocus
            End With
        End If
    Else
        MsgBox "Sie haben keinen Namen eingegeben.", vbExclamation, "Hinweis"
        TextBox1.SetFocus
    End If
    Set objRegEx = Nothing
    Set objMatch = Nothing
End Sub

Gruß
Nepumuk

Anzeige
Und die Anzahl stimmt auch nicht
15.04.2006 19:31:58
Nepumuk
Hi,
man soll ja auch nur ein Zeichen eingeben können!!
Private Sub CommandButton1_Click()
    Dim objSheet As Object, objRegEx As Object, objMatch As Object
    Dim blnFound As Boolean
    TextBox1.Value = Trim$(TextBox1.Value)
    If TextBox1.Value <> "" Then
        For Each objSheet In ThisWorkbook.Sheets
            If objSheet.Name = TextBox1.Value Then
                blnFound = True
                Exit For
            End If
        Next
        If Not blnFound Then
            Set objRegEx = CreateObject("vbscript.regexp")
            With objRegEx
                .Global = True
                .Pattern = "^[^\/\\:\*\?\[\]]{1,31}$"
                .IgnoreCase = True
                Set objMatch = .Execute(TextBox1.Value)
            End With
            If objMatch.Count > 0 Then
                With Application
                    .DisplayAlerts = False
                    .ScreenUpdating = False
                End With
                Worksheets("Disziplin").Copy After:=Worksheets(2)
                ActiveSheet.Name = TextBox1.Value
                Worksheets("Menüe").Select
                With Application
                    .DisplayAlerts = True
                    .ScreenUpdating = True
                End With
                Unload Me
            Else
                MsgBox "Ihre Eingabe enthält ungültige Zeichen wie * : ? \ / [ ]" & vbLf & _
                    "Bitte geben Sie einen anderen Namen ein.", vbExclamation, "Hinweis"
                With TextBox1
                    .SelStart = 0
                    .SelLength = .TextLength
                    .SetFocus
                End With
            End If
        Else
            MsgBox "Der Name ''" & TextBox1.Value & "'' ist schon vergeben." & vbLf & _
                "Bitte geben Sie einen anderen Namen ein.", vbExclamation, "Hinweis"
            With TextBox1
                .SelStart = 0
                .SelLength = .TextLength
                .SetFocus
            End With
        End If
    Else
        MsgBox "Sie haben keinen Namen eingegeben.", vbExclamation, "Hinweis"
        TextBox1.SetFocus
    End If
    Set objRegEx = Nothing
    Set objMatch = Nothing
End Sub

Gruß
Nepumuk
Anzeige
AW: Und die Anzahl stimmt auch nicht
15.04.2006 20:15:24
K.Rola
Hallo Nepumuk,
wenn man mehr als 31 Zeichen eingibt, kommt eine irreführende Fehlermeldung, dass
der Name ein ungültiges Zeichen enthält.
vbscript.regexp ist ein wenig wie die Geschichte mit den Spatzen und den Kanonen.
Gruß K.Rola
AW: Und die Anzahl stimmt auch nicht
15.04.2006 20:27:22
Nepumuk
Liebste K.Rola,
ein Schuss 9 Spatzen ist doch gar nicht so schlecht oder? Ich würde das ganze aber nicht erst im nachhinein prüfen, sondern die Eingabe begrenzen.
Gruß
Nepumuk
AW: Und die Anzahl stimmt auch nicht
15.04.2006 20:57:39
K.Rola
Hallo Nepumuk,
Recht hast du, er verwendet ja eine Textbox, da sollte MaxLenght reichen.
Ich würde das so lösen:

Function ungueltiger_Name(TextboxText As String) As Boolean
Dim i
For Each i In Array(":", "/", "\", "*", "[", "]")
If InStr(TextboxText, i) > 0 Then
ungueltiger_Name = True
Next
End Function

Gruß K.Rola
Anzeige
Ähhm...
16.04.2006 00:19:03
K.Rola
Korrektur:

Function ungueltiger_Name(TextboxText As String) As Boolean
Dim i
For Each i In Array(":", "/", "\", "*", "[", "]")
If InStr(TextboxText, i) > 0 Then
ungueltiger_Name = True
Exit Function
Next
End Function

AW: Ähhm... Nachfrage
16.04.2006 00:34:13
PeterW
Hallo K.Rola,
warum kommt der Code (wenn es so sein sollte) ohne das End If aus?
Gruß
Peter
AW: Ähhm... Nachfrage
16.04.2006 02:11:25
K.Rola
"warum kommt der Code (wenn es so sein sollte) ohne das End If aus?"
Hallo Peter,
tut er nicht, ich bin eine Pfeife.
Frohes Eiersuchen!
Gruß K.Rola
OT Pfeife
16.04.2006 14:45:30
PeterW
Hallo K.Rola,
zumindest pfeifst du auf hohem Niveau. ;-)
Frohe Ostern
Peter
Anzeige
AW: Ähhm...
16.04.2006 02:14:01
K.Rola
Korrektur der Korrektur:

Function ungueltiger_Name(TextboxText As String) As Boolean
Dim i
For Each i In Array(":", "/", "\", "*", "[", "]")
If InStr(TextboxText, i) > 0 Then
ungueltiger_Name = True
Exit Function
End If
Next
End Function

AW: Sheets.Name = Sheets.Range("A1")
15.04.2006 18:37:05
Thomas
Hallo Nepumuk,
1000 Dank, ich hoffe das Du mir noch einmal helfen kannst.
Wenn man den Namen eingegeben hat, dann soll noch ein MsgBox kommen mit OK und Abrechen,
falls der Name falch geschrieben wurde.
Kannst Du bitte das noch machen, denn ich habe es schon probiert und wieder nicht hinbekommen.
Viele Grüße aus Bayern
Thomas
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige