- ベストアンサー
EXCEL VBA 選択範囲をTargetに
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の間でもし右隣のセルに何か入力されたら上のセルと同じ値を表示する、ということをやりたいのですが、一行目でエラーになってしまいます。 選択範囲の指定の仕方が間違っているのでしょうか? 教えて下さい。 初歩的な質問で恐縮ですが、よろしくお願いします。
- みんなの回答 (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となります。 いろいろ難しいところはありますが、この勉強はどの局面でも役立ちますからがんばってくださいませ。
お礼
やはり範囲の指定の仕方が間違っていたんですね。 大変分り易く説明して頂き助かります。 おっしゃる通りに直して無事解決しました。 回答ありがとうございました。