【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?

WorkSeet Chengeで

If Target.Range("E20:E100") Then
If Target.Offset(0,1)<>"" Then
Target=Target.Offset(-1,0)
End If
End If

E20からE100の間でもし右隣のセルに何か入力されたら上のセルと同じ値を表示する、ということをやりたいのですが、一行目でエラーになってしまいます。
選択範囲の指定の仕方が間違っているのでしょうか?
教えて下さい。
初歩的な質問で恐縮ですが、よろしくお願いします。

A 回答 (1件)

こうしたいってことでしょか?



If Target.Row >= 20 And Target.Row <= 100 And Target.Column = 5 Then
If Target.Offset(0, 1) <> "" Then
Target = Target.Offset(-1, 0)
End If
End If


難しいですが、

Target.Range("E20:E100")

これだと、「変更したtargetがRange("E20:E100")かどうか」ではなく「変更したtargetの中にはRange("E20:E100")が存在するかどうか」
という意味になってしまいます。でも、targetはひとつのセルでしかないので、その中にセル列が存在することはないのでエラーとなってしまいます。

なので、「変更したtargetは20行以降であり、100行以内であり、5列目であるかどうか」という質問で無いと意味が成り立たなくなります。

- - - - - -

ただ、このソースだと望みの結果になってないような……
「E列の内容を変更した際、右隣にデータがあったら上のものを同じにする」でしたらいいのですが、
「E列の右隣のセルの内容を変更した際、その変更したセルにデータがあったら上のものを同じにする」
という場合、Target.Column = 5ではなくTarget.Column = 6となります。


いろいろ難しいところはありますが、この勉強はどの局面でも役立ちますからがんばってくださいませ。
    • good
    • 1
この回答へのお礼

やはり範囲の指定の仕方が間違っていたんですね。
大変分り易く説明して頂き助かります。
おっしゃる通りに直して無事解決しました。

回答ありがとうございました。

お礼日時:2007/10/09 09:08

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A