"タイトル"シートの別のシートのセル値に基づいてシートタグ名を動的に変更しようとしています。ダイナミックな変更は、同じシートから更新を行い、セル値を変更した後にエンターキーを押したときに変更されたときにうまく機能します。しかし、参照セルが別のシートにある場合、入力を押した後、更新するシートに積極的にアクセスしてシート内をクリックするまで、シートタグに変更はありません。これを回避する方法はありますか?私は約20枚のシートを持っているので、変更が加えられたときに各シートをクリックするのは面倒です。ここに私のコードは次のとおりです。Excel:別のシートのセル値に基づいてシートタグを動的に変更する
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Set Target = Worksheet("Title").Range("A1")
If Target = "" Then Exit Sub
On Error GoTo Badname
ActiveSheet.Name = Left(Target, 31)
Exit Sub
Badname:
MsgBox "Please revise the entry in A1." & Chr(13) _
& "It appears to contain one or more " & Chr(13) _
& "illegal characters." & Chr(13)
Range("A1").Activate
End Sub
私の他のオプションは、変更を実行するための更新ボタンを追加することですが、可能であれば、私はこの問題を回避したいと思います。
ご意見をお寄せください。
特定のワークシートの変更に対してコードのスコープが設定されているためです。したがって、Sheet1にこのコードがある場合、シート1で変更を加えた場合にのみ、このコードが有効になります。このコードをすべてのワークシートの後ろに追加するか、ワークブックレベルシート変更イベント 'Private Sub Workbook_SheetChange(ByVal Sh As Object、ByVal Target as Range)を使用するだけで、ワークブックオブジェクトでアクセスできます。 – cyboashu
私のソリューションはあなたのケースで機能しましたか? – RCaetano
@cyboashu、遅い返信のためにお詫び申し上げます。私は実際に両方の返信の組み合わせでこれを動作させることができたので、両方の入力に感謝します。 workbook_sheetの変更は、私が最終的に探していたブックのレベルシート変更イベントでした。あなたがそれを回答として受け入れると、私はそれを受け入れます。数日後に更新されない場合は、現在の回答を受け入れます。もう一度、助けてくれてありがとう! – dl00065