更改工作表名称

在我命名的活动EXCEL工作表上,我放置了一个less于32个字符的string,比如A1单元格。

我想使用A1的string来重命名工作表。 过去我曾经使用过VBA,但还没有一段时间。

我会很高兴,如果有人可以build议一个macros,将单元格A1单击时,将这样做。 有没有任何字符不能在A1(我想〜和下划线)?

将此代码粘贴到相关的Sheet对象(VBA编辑器)中。
请注意,您也可以使用双击等事件。
在select活动页面的单元格“A1”时,页面名称将成为单元格“A1”所包含的值。

 Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim sSheet_Name As String If Target = ActiveSheet.Range("A1") Then sSheet_Name = ActiveSheet.Range("A1").Value ActiveSheet.Name = sSheet_Name End If End Sub 

签出: Excel工作表名称的有效字符

对于一个完整的过程,我会build议

  1. testing表单名称是否已经存在(为了防止错误)
  2. 重命名工作表之前清理无效的字符
  3. 检查新的工作表名称less于32个字符(但不是空的)

使用这个代码

  • 右键单击您的工作表标签
  • View Code
  • 复制并粘贴代码
  • Alt + F11回到Excel

该代码是由右键单元格A1触发的

 Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Dim rng1 As Range Dim StrNew As String Dim objRegex As Object Dim blTest As Boolean Dim ws As Worksheet Set rng1 = Intersect(Range("A1"), Target) If rng1 Is Nothing Then Exit Sub StrNew = rng1.Value Set objRegex = CreateObject("vbscript.regexp") With objRegex .Pattern = "[\/\\\?\*\]\[]" .Global = True blTest = .test(StrNew) StrNew = .Replace(StrNew, vbNullString) End With On Error Resume Next Set ws = Sheets(StrNew) On Error GoTo 0 If ws Is Nothing Then If Len(StrNew) > 0 And Len(StrNew) < 32 Then ActiveSheet.Name = StrNew MsgBox "Sheet name updated to " & StrNew & vbNewLine & IIf(blTest, "Invalid characters were removed", vbNullString) Else MsgBox "Sheetname of " & StrNew & " is either empty or too long", vbCritical End If Else MsgBox "Sheet " & StrNew & " already exists", vbCritical End If End Sub