ウェブとスタックを検索しようとしました。しかし、私は有用な何かを見つけることができませんでした。私は、セル値に不正な文字が含まれていないときにワークシートの名前が変更される非常に単純なイベントを作成しようとしています。セルの値に基づいてExcelワークシートの名前を変更する
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Target = Sh.Cells(1, 1)
If InStr(Target, "\") > 0 Or IsEmpty(Target) = True _
Or InStr(Target, "/") > 0 Or InStr(Target, "*") > 0 _
Or InStr(Target, "[") > 0 Or InStr(Target, "]") > 0 _
Or InStr(Target, ":") > 0 Or InStr(Target, "?") > 0 Then
Else
Sh.Name = Target
End If
End Sub
このように動作するはずです。A1の値にすべての有効な文字が含まれている場合は、シートの名前を変更します。それは本当に起こっていますが、シートの名前に他のセルに付けた値も変更されます。何かアドバイス?
使用 '交差()' *ターゲットをテストする* –
わからないがあなたが本当にやろうとしているのですが、 'Target'は変更されたセル範囲でイベントをトリガーしました。そして 'Target = Sh.Cells(1,1)'でこのセル範囲を 'Sh.Cells(1,1).Value'で上書きします。では、あなたは何をしようとしていますか? 'Sh.Cells(1、1).Value'でシートの名前を変更しますか?しかし、なぜすべての細胞を交換するのですか? –
私は各シートのA1がそのシートの名前を管理したいと思っています。それは事実ですが、副作用としてシートの他の場所に挿入された値も書き換えられます。 –