更改工作表名称
在我命名的活动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议
- testing表单名称是否已经存在(为了防止错误)
- 重命名工作表之前清理无效的字符
- 检查新的工作表名称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