ActiveSheet.Name = .... FUNKTIONIERT NICHT
#1
Ich habe ein Problem mit Office 2013
Ich habe in einem Formular eine Textbox (AnlagenAnlage) in der ich einen Namen eintragen kann. Das soll der Name des neuen Tabellenblattes werden.
Ein verstecktes Tabellenblatt („Vorlage“) wird kopiert und mit dem Namen des Textfeldes angelegt.
Das Tabellenblatt („Vorlage“) wird wieder versteckt und das neue Tabellenblatt sollte aktiviert werden. Leider wird es nicht aktiviert. Wenn ich in die Zellen etwas schreiben will, wird es komischerweise in die Tabelle geschrieben, von der aus ich das Formular gestartet habe.
Warum nur ? Bis zur OfficeVersion 2010 ging alles ohne Probleme.
 
Exceltabelle anbei
 
Code:
Private Sub CommandButton1_Click()
Dim Eingabe As String
Dim variable As String

Eingabe = AnlagenName.Value

Sheets("Vorlage").Visible = xlSheetVisible 'Das Tabellenblatt "Vorlage" wird wieder angezeigt
   Sheets("Vorlage").copy Before:=Sheets(1)
Sheets("Vorlage").Visible = xlVeryHidden 'Das Tabellenblatt "Vorlage" wird wieder ausgeblendet

ActiveSheet.Name = (Eingabe) 'Das neue Tabellenblatt wird benannt nach der Variblen (Eingabe)

Modul1.StopMaske 'Formular angehalten

Sheets(Eingabe).Select
Range("A6").Select 'der Curser wird in Zelle A6 plaziert
ActiveCell.Activate

End Sub



Vielen Dank


Angehängte Dateien
.xlsm   Problem.xlsm (Größe: 23,42 KB / Downloads: 5)
Top
#2
Moin,

das kann ich nicht bestätigen.
Der einzige Fehler, den ich "auf die Schnelle" gefunden habe: Wenn in die Textbox nichts oder kein gültiger Name eingegeben wird, dann meckert Excel (zu Recht).

Aber vielleicht habe ich das auch falsch verstanden. DENN:
Zitat:Wenn ich in die Zellen etwas schreiben will, wird es komischerweise in die Tabelle geschrieben, von der aus ich das Formular gestartet habe.
Und das sollte stets das Blatt Start mit dem Button sein. Ein Klick darauf bringt dann ja die UserForm auf den Schirm. Und ja, ich verwende Excel 2013.
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Top
#3
Hallo Matthias,

so ganz klar ist mir Deine Beschreibung auch nicht. Aber hier mal eine komplette Routine mit Fehlerbehandlung:

Private Sub CommandButton1_Click()
 Dim lngSheet As Long
 If Len(AnlagenName) Then
   For lngSheet = 1 To Sheets.Count
     If Sheets(lngSheet).Name = CStr(AnlagenName) Then
       MsgBox "Es gibt schon ein Blatt namens " & AnlagenName & "!", vbInformation
       AnlagenName = ""
       AnlagenName.SetFocus
       Exit For
     End If
   Next lngSheet
 End If
 If Len(AnlagenName) Then
   Application.ScreenUpdating = False
   With Sheets("Vorlage")
     .Visible = xlSheetVisible 'Das Tabellenblatt "Vorlage" wird wieder angezeigt
     .copy Before:=Sheets(1)
     .Visible = xlVeryHidden 'Das Tabellenblatt "Vorlage" wird wieder ausgeblendet
   End With
   With Sheets(1)
     .Name = CStr(AnlagenName) 'Das neue Tabellenblatt wird benannt nach der TextBox AnlagenName
     .Select
     .Range("A6").Select 'der Curser wird in Zelle A6 plaziert
   End With
   Application.ScreenUpdating = True
   StopMaske 'Formular angehalten
 End If
End Sub

Gruß Uwe
Top
#4
Hola Uwe,

das mit der Prüfung ob das Tabellenblatt vorhanden ist, bzw die Fehlermeldung zu verhindern, wenn kein
Name eingetragen ist ist super. Vielen Dank. Das macht die Sache runder.
Das Problem was ich hatte lag am Aufruf der Userform durch den Button.

Code:
Sub Anlegen()

Eingabe.Show

End Sub

Es funktioniert bei mir mit:

Code:
Sub Anlegen()

Eingabe.Show False

End Sub


Vielen Dank 
Matthias
Top


Gehe zu:


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