[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セルの値をシート名にしたいのですが、シート名が自動的に変わりません。』(hiyoko)
あるセルのデータをシート名にしたくて過去検索から下記のコードをシートタグのコード欄に書き込みしたのですが、
関連セルに入力してもシート名が変わりません。
参考とした投稿・・・[[20040930180016]]
コピーして貼り付けたコード
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Row = 1 Then Me.Name = Target.Value On Error Resume Next End If End Sub
A1には「 ="大監査"&(MIDB(L2,3,2))&(IF(LENB(D2)=3,"0"&(SUBSTITUTE(D2,"月","")),SUBSTITUTE(D2,"月",""))) 」
の関数があります。
これでL2(西暦年)とかD2(○月)を変更した場合に、シート名が自動的に変わるようにしたいのです。
A1にダイレクトに入力した場合はそれがすぐにシート名に反映されました。
対象セルに計算式を入れたため自動的に変更とならないかと思いますが、私の知識ではどうにもなりません。
シートは1枚だけなので、費用対効果を考えれば、手打ちで名前変更したほうが早いかも知れませんが、
疑問を解決したくてお尋ねいたします。
よろしくお願いいたします。
< 使用 Excel:Excel2012(Mac)、使用 OS:Windows8 >
L2とD2が変更されたときに、実行するようにすればいいのではないですか? Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim myAddr As String myAddr = Target.Address(0, 0) If (myAddr = "D2") Or (myAddr = "L2") Then On Error Resume Next Me.Name = Range("A1").Value On Error GoTo 0 'シート名に使えない名前チェックが面倒・・・ End If End Sub (稲葉) 2014/06/25(水) 13:27
すぐにコードをシートタグに貼り付けしたのですが、方法がまずいのか反応しませんでした。
D2またはL2に入力してENTERキーを押下しても反応がなく、再度このセルをクリックしたらシート名が変わりました。
大変恐縮ですが、入力→ENTERでシート名が変わるようにできないでしょうか。
よろしくお願いいたします。
(hiyoko) 2014/06/25(水) 13:56
ごめんなさい、プロシージャ名間違ってました! Private Sub Worksheet_Change(ByVal Target As Range) Dim myAddr As String myAddr = Target.Address(0, 0) If (myAddr = "D2") Or (myAddr = "L2") Then On Error Resume Next Me.Name = Range("A1").Value On Error GoTo 0 'シート名に使えない名前チェックが面倒・・・ End If End Sub
こちらが正しいです。 (稲葉) 2014/06/25(水) 14:30
ご多忙の中、ありがとうございました。
うまく稼動しました。
些細なことですが、これでひとつ省力化(本当は名前の変更もれを防ぐため)ができました。
今後ともよろしくお願いいたします。
(hiyoko) 2014/06/25(水) 14:44
面倒だったのでOn Error Resume Nextでエラー処理していますが、スラッシュなどシート名 に出来ない文字が入力された場合、変更されずにそのまま処理が続けられます。 また、マクロを有効にしていないと実行されませんので、
>本当は名前の変更もれを防ぐ あまり効果はないと思います・・・ (稲葉) 2014/06/25(水) 14:53
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.