プロが教える店舗&オフィスのセキュリティ対策術

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Target.Count <> 1 Then Exit Sub
If Not IsNumeric(Target.Value) Then Exit Sub
If Target.Value <> 1 Then Exit Sub
If Intersect(Target, Range("W:W, AC:AC, AQ:AQ, AW:AW")) Is Nothing Then Exit Sub
i = Target.Column - 6 '
Debug.Print Target.Address & " " & Target.End(xlToLeft).Column
If i < 1 Then Exit Sub
Target.Offset(0, i - Target.Column).Resize(1, 5).Copy
Application.EnableEvents = False
Target.PasteSpecial Paste:=xlPasteAll
Application.CutCopyMode = False
Application.EnableEvents = True
Target.Select
end sub

上のコードはW列、AC列、AQ列、AW列に1と入力すると、入力セルから
みて6つ左から5つのデータがコピーされるマクロです。ここでAK列、BE列からみて8つ左から5つのデータをコピーする
条件を付加したいのですがうまくいきません。

If Intersect(Target, Range("AK:AK, BE:BE")) Is Nothing Then Exit Sub
i = Target.Column - 8 '

↑ このコードを追加する感じです。 
この条件を付加しなければうまく動くのですが、付加して何とか動かしたいと考えています。
何か良い方法があればおしえていただけると幸いです。

A 回答 (2件)

ふつーに丁寧に作成していけば,今の延長でも別にムズカシイ作業じゃありません。



private sub worksheet_Change(byval Target as excel.range)
 dim i as long
 if target.count > 1 then exit sub
 if target <> 1 then exit sub

 if not application.intersect(target, range("W:W,AC:AC,AQ:AQ,AW:AW")) is nothing then
  i = -6
 elseif not application.intersect(target, range("AK:AK,BE:BE")) is nothing then
  i = -8
 else
  exit sub
 end if

 application.enableevents = false
 target.resize(1, 5).value = target.offset(0, i).resize(1, 5).value
 application.enableevents = true
end sub


他にも例えばSelect caseを使い,Target.columnで仕分けてみるなんてやり方もアリかもしれませんね。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。完璧なコードで非常に感謝致します。何より背景の色も
コピーされていて困っていたのですがそれもなくなっており、次のセルを選択するように
できていたのですごく嬉しいです。本当に感謝致しますm(_ _)m

お礼日時:2012/03/20 16:49

>ここでAK列、BE列からみて8つ左から5つのデータをコピーする


という事は
ここでAK列からみて8つ左から5つのデータをコピーする
AD~AH をコピー
BE列からみて8つ左から5つのデータをコピーする
AX~BC をコピー
という事でしょうか
Offsetのこだわらず
Rnage("AD"& Target.ROW).Resize(1, 5).Copy
とか
Rnage("AD"& Target.ROW & ":AH" & Target.Row).Copy
といった記述がわかりやすくないでしょうか。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。若干ずれはありますがイメージととしては
そのような感じでした。たしかにそうですよね。参考にさせていただきますm(_ _)m

お礼日時:2012/03/20 16:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!