[[20160419043223]] 『シート名連続変更について』(sige) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『シート名連続変更について』(sige)

[[20160324150041]]
前回こちらでse_9様にお世話になりました。
ちょっと困っています。
以下で、"R4"の変化でシート名の年月日を変更しているのですが
どういうわけか"R4"以外のセルに値を入力してもイベントが発生し
シート名が、変わってしまいます。
対応策をおわかりの方よろしくお願いします。

 Private Sub Worksheet_Change(ByVal Target As Range)

     Dim ws As Worksheet
     Dim i As Long

 For Each ws In Worksheets
     If ws.Name <> "祝日" Then ws.Name = Int(Rnd * 10000)
 Next

     On Error GoTo ERR_HANDLER

     Sheets(1).Name = Format(DateAdd("m", 1, Range("R4").Value), "ge年m月")
     For i = 2 To 12
         If Target.Address(False, False) = "R4" Then
            If Format(DateAdd("m", i - 1, Range("R4").Value), "e") = Format(DateAdd("m", i, Range("R4").Value), "e") Then
               Sheets(i).Name = Format(DateAdd("m", i, Range("R4").Value), "m月")
            Else
               Sheets(i).Name = Format(DateAdd("m", i, Range("R4").Value), "ge年m月")
            End If
         End If
     Next

    Exit Sub

ERR_HANDLER:

   MsgBox "現在のA1セルの値はシート名にできません。"

 End Sub

< 使用 Excel:Excel2013、使用 OS:Windows10 >


 >>どういうわけか"R4"以外のセルに値を入力してもイベントが発生し 
 >>シート名が、変わってしまいます。

 どういうわけか ではなく 理由はあります。
 前スレでも ねむねむさんから

 >>A1セルはR4セルが変更された場合に同時に変更されるのだからTargetがR4セルかどうかをチェックすればいいのでは?

 というアドバイスがありましたよね。

 Changeイベントは、そのシート上のセルに変更が加えられれば『かならず』発生します。
 ですから、R4 の変更時のみ処理したいということであれば、R4 の変更ではなかったら終了 というコードを
 プロシジャの先頭に記述します。

 たとえば If Intersect(Target,Range("R4")) Is Nothing Then Exit Sub といったように。

(β) 2016/04/19(火) 06:13


 どういうわけか、と言われても、
 For Each ws In Worksheets
     If ws.Name <> "祝日" Then ws.Name = Int(Rnd * 10000)
 Next
 を冒頭に実行しているからですね。
 対応策はすでにご指摘があったとおりです。

 たとえば 
 If Target.Address(False, False) <> "R4" Then Exit Sub
 でもいいですよ。

 # ちなみに、ハンドルネームが連続していますが、
 # 別に面白半分でひやかし投稿しているのではありません。
 # 結構な数の投稿をさせていただいています。
 # 一応断らないと、誤解される向きがあるので。

(γ) 2016/04/19(火) 06:32


 >> # ちなみに、ハンドルネームが連続していますが、

 そういえば、別の板ですが、αβγ さんというHNで質問があり、βが、ちょこっとコメントしたことがあります。
 γさんのお目には留まらなかったようですけど、もしγさんもコメントしておられれば、おもしろかったかもですね。

 いやいや、スレよごし、失礼しました。

(β) 2016/04/19(火) 06:48


βさん
γさん
速攻ありがとうございました。
Exit Subが必要だったのですね。
"R4"に限る!

> # ちなみに、ハンドルネームが連続していますが、
> # 別に面白半分でひやかし投稿しているのではありません。
> # 結構な数の投稿をさせていただいています。
> # 一応断らないと、誤解される向きがあるので。
回答者のみなさん何かありました?
(sige) 2016/04/19(火) 10:33


 >>回答者のみなさん何かありました?

 いえいえ。

 β の書き込みの直後に 【γ】という、HNでレスをアップされて、なんだか β->γ と遊んでいるように思われるかなと
 そう心配されたんだと思います。

 ちなみに γさんが【γ】というHNを使われはじめたタイミングは 私が 【β】を使いだすより少し前だったように記憶しています。

(β) 2016/04/19(火) 11:51


> β->γ と遊んでいるように思われるかなと
> そう心配されたんだと思います。
初めてのかたは、たぶんそう思うかも知れないと思いまして。

戯れ言に近い発言におつきあい頂き深謝申し上げます。

(γ) 2016/04/19(火) 22:24


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.