• ベストアンサー

マクロでの条件判断について

A行に何かデータを入力した場合、同じ列のとなりの行のセルに入力時間を残したいと思い、 例 A1:あ B1:2006/5/9/16:00 A2:い B2:2006/5/10/18:00 以下のマクロを教えて頂いたのですが、 Private Sub Worksheet_Change(ByVal Target As Range) '///A列のセル以外ならマクロ終了/// If Target.Column <> 1 Then Exit Sub '///1行目のセルならマクロ終了/// If Target.Row = 1 Then Exit Sub '///内容がブランクならB列のセルをブランクにする。/// If Target.Value = "" Then Target.Offset(0, 1).Value = "" Else Target.Offset(0, 1).Value = Format(Date + Time, "yyyy/mm/dd hh:mm:ss") End If End Sub A列以外にもC列に入力した値の入力時間をD列にE列に入力した値の入力時間をF列にと、全部で6箇所値を入力したとなりのセルに入力時間が出るようにしたかったのですが、 '///A列のセル以外ならマクロ終了/// If Target.Column <> 1 Then Exit Sub の部分を '///A,C列のセル以外ならマクロ終了/// If Target.Column <> 1 Or Target.Column <> 3 Then Exit Sub のように変更してまずはA列とC列に値を入れて挑戦したのですが、時間が表示されなくこまっておりました。 解決方法をご存知のかたがいらっしゃいましたら、ぜひよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • S-Fuji
  • ベストアンサー率36% (592/1624)
回答No.3

#1です。このようにしてみました。 Private Sub Worksheet_Change(ByVal Target As Range) ' 1行目のセルならマクロ終了 If Target.Row = 1 Then Exit Sub ' A列かC列かE列なら If Target.Column = 1 Or Target.Column = 3 Or Target.Column = 5 Then '  内容がブランクなら隣のセルをブランクにする If Target.Value = "" Then Target.Offset(0, 1).Value = "" Else Target.Offset(0, 1).Value = Format(Date + Time, "yyyy/mm/dd hh:mm:ss") End If End If End Sub

masya1999
質問者

お礼

ありがとうございます!無事できました。 大変助かりました。

その他の回答 (2)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

全部で6箇所とはA.C,E,G,I,K列ですか? それなら Private Sub Worksheet_Change(ByVal Target As Range) '///A.C,E,G,I,K列以外ならマクロ終了/// If Target.Column <> 1 And Target.Column <> 3 And Target.Column <> 5 _ And Target.Column <> 7 And Target.Column <> 9 And Target.Column <> 11 Then Exit Sub '///1行目のセルならマクロ終了/// If Target.Row = 1 Then Exit Sub '///内容がブランクならB列のセルをブランクにする。/// If Target.Value = "" Then Target.Offset(0, 1).Value = "" Else Target.Offset(0, 1).Value = Format(Date + Time, "yyyy/mm/dd hh:mm:ss") End If End Sub ですかね。

masya1999
質問者

お礼

ありがとうございます!大変参考になりました。

  • S-Fuji
  • ベストアンサー率36% (592/1624)
回答No.1

>If Target.Column <> 1 Or Target.Column <> 3 Then Exit Sub C列は、最初のA例以外の条件でEXITしてしまうし、その他もA列は、C列以外の条件に当たります。 この場合は、ORの条件で行うのでしたら、 If Target.Column = 1 Or Target.Column = 3 Then で、時間を書き込み elseで、抜け出るように

masya1999
質問者

お礼

ご返答ありがとうございます。 なるほど条件式がまずかったわけですね、 大変お手数ではありますが、elseで抜けるとはどのように書けばよろしいのでしょうか? 何分初心者なのもで、基本的なことかもしれませんがよろしくお願致します。

関連するQ&A

専門家に質問してみよう