如何允许用户输入工作表名称

时间:2014-09-29 07:26:07

标签: excel vba excel-vba

如何通过输入框提示用户将工作表从sheet1命名为他们喜欢的名称?

4 个答案:

答案 0 :(得分:3)

此代码将执行..使用Inputbox

Sub renameSheet() 
    Dim NewName As String 
    NewName = InputBox("What Do you Want to Name the Sheet1 ?") 
    Sheets("Sheet1").Name = NewName 
End Sub 

答案 1 :(得分:1)

参考:http://www.mrexcel.com/forum/excel-questions/538208-check-invalid-worksheet-name.html

此代码非常强大:

Sub TestSheetname()

Dim mySheetName$
mySheetName = InputBox("Enter proposed sheet name:", "Sheet name")
If mySheetName = "" Then
MsgBox "You did not enter anything or you hit Cancel.", 64, "No sheet name was entered."
Exit Sub
End If

'If the length of the entry is greater than 31 characters, disallow the entry.
If Len(mySheetName) > 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(mySheetName, (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(mySheetName)
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
Worksheets.Add.Name = strSheetName
MsgBox "A new sheet named ''" & mySheetName & "'' has been added.", 64, "Done"
Else
MsgBox "There is already a sheet named " & strSheetName & "." & vbCrLf & _
"Please enter a unique name for this sheet.", 16, "Duplicate sheet names not allowed."
End If

End Sub

答案 2 :(得分:0)

试试这段代码:

Private Sub CommandButton1_Click()
Dim sheetname As String
sheetname = Me.TextBox1.Value
Sheets("Sheet1").Name = sheetname
End Sub

答案 3 :(得分:0)

试试这个:(您可以指定快捷键,例如,ctrl + D在工作表打开时运行此宏)

Sub RenameSheet()
Dim strSheetName As String
strSheetName = InputBox("enter new name of Sheet", "Editing Sheet Name")
'With ThisWorkbook.Worksheets(1)        'use this if want to rename again and again and you know the sheet no = 1 
'With ThisWorkbook.Worksheets("Sheet1") ' use this if want to rename once
With ThisWorkbook.ActiveSheet           'use this if want to rename any activesheet
.Name = strSheetName
End With
End Sub