2017-04-06 3 views
0

In meiner Arbeitsmappe befinden sich 50 Arbeitsblätter, ich habe ein Benutzerformular erstellt, das eine Textbox öffnet, die mir helfen kann, den Blattnamen zu ändern. Ich möchte das durch verschiedene Arbeitsblätter und das aktuelle Arbeitsblatt Name sollte in diesem Textfeld angezeigt werden und dann werde ich den Blattnamen mit dem unten angegebenen Code ändern.Benutzerformular Textfeld zur Anzeige des aktiven Blattnamens

Können Sie mir bitte eine Codezeile mitteilen, mit deren Hilfe das Textfeld den aktuellen Arbeitsblattnamen anzeigt.

Hier finden Sie den Code mit Hilfe von denen mir den vorhandenen Arbeitsblatt-Namen, indem Sie den Namen in der Textbox ändern Sheetnametext

Private Sub Sheetnametext_Change() 

'If the length of the entry is greater than 31 characters, disallow the entry. 

If Len(Sheetnametext) > 31 Then 
    MsgBox "Worksheet tab names cannot be greater than 31 characters in length." & vbCrLf & "You entered " & mysheetname & ", which has " & Len(mysheetname) & " characters.", , "Keep it under 31 characters" 
    Exit Sub 
End If 

'Sheet tab names cannot contain the characters /, \, [, ], *, ?, or :. 'Verify that none of these characters are present in the cell's entry. 
Dim IllegalCharacter(1 To 7) As String, i As Integer 

IllegalCharacter(1) = "/" 
IllegalCharacter(2) = "\" 
IllegalCharacter(3) = "[" 
IllegalCharacter(4) = "]" 
IllegalCharacter(5) = "*" 
IllegalCharacter(6) = "?" 
IllegalCharacter(7) = ":" 

For i = 1 To 7 
    If InStr(Sheetnametext, (IllegalCharacter(i))) > 0 Then 
     MsgBox "You used a character that violates sheet naming rules." & vbCrLf & vbCrLf & "Please re-enter a sheet name without the ''" & IllegalCharacter(i) & "'' character.", 48, "Not a possible sheet name !!" 
     Exit Sub 
    End If 
Next i 

'Verify that the proposed sheet name does not already exist in the workbook. 
Dim strSheetName As String, wks As Worksheet, bln As Boolean 

strSheetName = Trim(Sheetnametext) 

On Error Resume Next 
Set wks = ActiveWorkbook.Worksheets(strSheetName) 
On Error Resume Next 

If Not wks Is Nothing Then 
    bln = True 
Else 
    bln = False 
    Err.Clear 
End If 

'History is a reserved word, so a sheet cannot be named History. 
If UCase(mysheetname) = "HISTORY" Then 
    MsgBox "A sheet cannot be named History, which is a reserved word.", 48, "Not allowed" 
    Exit Sub 
End If 

'If the worksheet name does not already exist, name the active sheet as the InputBox entry. 
'Otherwise, advise the user that duplicate sheet names are not allowed. 
If bln = False Then 
    ActiveSheet.Name = strSheetName 
End If 

End Sub 
+0

Wenn ich Sheetnametext.Text = ActiveSheet.Name versuche dann zeigt es den aktuellen Blattnamen, aber es erlaubt mir nichts in das Textfeld zu schreiben. – astha

Antwort

0

Astha besser verwenden Sie eine Listbox zu Blättern in der Arbeitsmappe zu navigieren ,, versuchen dieser Code.

Private Sub UserForm_Initialize()

Dim N As Long Für n = 1 bis ActiveWorkbook.Sheets.Count ListBox1.AddItem ActiveWorkbook.Sheets (N) .Name Weiter N

End Sub

+0

Also shud Ich ändere meinen vorherigen Code auch von Textfeld (Sheetnametext) zu Listbox1 – astha

+0

Wenn Sie meine Codes verwenden, wird genug, um eine Lösung zu bekommen. –

+0

Sie möchten, dass ich eine andere Listbox erstelle, weil dies eine Textbox ist, so dass Ihr Code nicht funktioniert. – astha

Verwandte Themen