名前付きのアクティブな EXCEL シートに、32 文字未満の文字列を cell としましょうA1
。
A1
文字列を使用してシートの名前を変更したいと考えています。過去にVBAを使用したことがありますが、しばらく使用していません。
セル A1 がクリックされたときにこれを実行するマクロを提案していただければ幸いです。A1に使えない文字はありますか(~とアンダーバーが欲しい)?
このコードを関連するシート オブジェクト (VBA エディター) に貼り付けます。
ダブルクリックなどのイベントも使用できることに注意してください。
アクティブシートのセル「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 シート名に有効な文字
完全なプロセスについては、お勧めします
このコードを使用するには
View Code
コードは、セル 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