ここから本文です

エクセルのマクロについて

hom********さん

2011/6/2012:56:30

エクセルのマクロについて

今下記のようなコードをシートモジュールに記述しているのですが、追加の条件でC列に何か文字列が入れば、B列に今日の日付が出るようにもしたいのですが、どのようにしたらよいのかわかりません。
よろしくお願い致します。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 8 Then Exit Sub
If IsDate(Target) = True Then
Target.Offset(, 2) = Date
End If
If Target.Value = "" Then
Target.Offset(, 2) = Clear
End If

End Sub

閲覧数:
358
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

ann********さん

2011/6/2013:11:56

列番号を判断して行ないます。
-----
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Column
Case Is = 3
If Target.Value <> "" Then Target.Offset(, -1) = Date
If Target.Value = "" Then Target.Offset(, -1) = Clear
Case Is = 8
If IsDate(Target) = True Then Target.Offset(, 2) = Date
If Target.Value = "" Then Target.Offset(, 2) = Clear
Case Else
Exit Sub
End Select
End Sub

質問した人からのコメント

2011/6/20 23:37:49

ありがとうございます。

ベストアンサー以外の回答

1〜1件/1件中

kam********さん

2011/6/2013:08:06

> C列に何か文字列が入れば、B列に今日の日付が出るようにもしたい

以下のようにすればいいかと思います。

Private Sub Worksheet_Change(ByVal Target As Range)
'H列の値が変わった場合
If Target.Column = 8 Then
If IsDate(Target) = True Then
Target.Offset(, 2) = Date
End If
If Target.Value = "" Then
Target.Offset(, 2) = Clear
End If
End If
'C列の値が変わった場合
If Target.Column = 3 Then
Target.Offset(, -1) = Date
End If
End Sub

C列の値が消えた場合、B列も消したいならば、
Target.Offset(, -1) = Date
の下に
If Target.Value = "" Then
Target.Offset(, -1).Clear
End If
とすればできると思います。

また、
Target.Offset(, 2) = Clear
は、
H列の値が空白の場合は、J列も空白にしたいという意味であれば、
Target.Offset(, 2).Clear
かと思います。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる