アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在A1に入力したらB1に自動的に入力時間を入れられるマクロは見つかりましたので、下記のものをしようしています。
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim r As Range
For Each r In Target
If r.Column = 2 Then
r.Offset(0, 1).Value = Format(Now, "hh:mm:ss")
End If
Next r
End Sub

ここにさらに、C1に文字が入力されたらD1に入力時間が自動挿入されるようにしたい場合はどのようにしたらよいのでしょうか。

A 回答 (3件)

こんにちは。



C1とD1だけなら、下記でも良いかと思います。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(False, False) <> "C1" Then Exit Sub
Range("D1").Value = Format(Now, "hh:mm:ss")
End Sub

C列とD列全てなら、下記が良いかと思います。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 3 Then Exit Sub
Target.Offset(, 1).Value = Format(Now, "hh:mm:ss")
End Sub
    • good
    • 0

こんにちは



>現在A1に入力したらB1に自動的に入力時間を入れられるマクロ
何か違うような・・・

A1に入力しても何も起こらないのでは?
ご提示のコードだと、「B列の値を変更すると右隣(=C列)のセルに時刻を表示する」ようになっていませんか?

>C1に文字が入力されたらD1に入力時間が自動挿入される
C列は、すでに時刻表示に使っているのではないかと思いますけれど・・?
また、対象は1行目だけってことにしたいのでしょうか?

いずれにしろ、
>If r.Column = 2 Then
の部分で対象範囲を限定していますので、ここをご希望の内容に変更すれば宜しいでしょう。
ちなみに、上記では「2列目(=B列)」のチェックを行っていますので、B列のどのセルであっても、値が変更されれば処理がされるようになっています。
    • good
    • 0

>If r.Column = 2 Then


で「A1に入力したら」になりますか?
「B1に入力したらC1に・・・」の間違いではありませんか?
これを
If r.Column = 1 or r.Column = 3 Then
に書きかえれば、「A1またはC1に入力したら・・・」
になるはずです。
ただし、Column は列をしめすプロパティーですので、A1やC1のように1行目のみを対象としていません。つまり他の行でもその右隣に作業時刻を入力することになっている気がします。
    • good
    • 0

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

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