[[20090626004312]] 『複数セルのコピー時のchengeイベント』(もも) ページの最後に飛ぶ

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

 

『複数セルのコピー時のchengeイベント』(もも)

 単一セルをコピペしたら、チェンジイベントが発生して
 希望通りになるのですが、複数セルをコピペしたら、うまくいきません。

 Target.Count > 1 Then Exit Sub

 で、単一セルでなければ、処理を抜けているので当然と言えば当然なんですが・・・

 やりたい事は、

 Target行のA列にTarget行の一行上のA列の値を入れる。
 (Target行が複数でもすべてのTarget行のA列に値を入れたい)

 現状単一セルであれば、コピペで変更してもOK
 もちろん、同じ行で複数セルの変更入力をしても、該当のセルを変更するときは
 単一セルなので、当然OK

 でも、複数セルのコピぺで変更したときに、該当セルが含まれていても
 反応なしです。⇒これを、可能にしたい。

 言ってることが、矛盾しているというか、自分で先に単一セルでなければ
 処理を抜けてるわけですから・・・。ただ、そうしないと
 複数セルを選択した時に、「型が一致しない」というエラーが出るので・・・。
 と、いうことは、やぱり無理なんでしょうか。

 代替え案でも、何かお知恵をお貸しください。
 よろしくお願いいたします。


 Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Count > 1 Then Exit Sub
     :
     Target.Row ....
     :
 End Sub
 を
 Private Sub Worksheet_Change(ByVal Target As Range)
     Dim r As Range
     Application.EnableEvents = False
     For Each r In Target
         :
         r.Row ....   ' For の中は今までの処理:ただし Target を r に変えて
         :
     Next
     Application.EnableEvents = True
  End Sub
 のようにすれば、変更したセルが順番に処理されると思いますが、どうでしょうか。
 (Mook)

 こんなのですか?
 使い勝手が悪そうですが。。。(ROUGE)
 
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rr As Range
Application.EnableEvents = False
For Each rr In Intersect(Target.EntireRow, Range("A:A"))
 If rr.Row > 1 Then rr.Value = rr.Offset(-1).Value
Next
Application.EnableEvents = True
End Sub

コメント返信:

[ 一覧(最新更新順) ]


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