ตามไฟล์แนบครับ
timestamp_test.xlsm
1. ผมต้องการให้ป้อนข้อมูลลงในคอลัมน์ A2,B2,C2,D2,E2 แล้ววันที่และเวลาจะขึ้นเองอัตโนมัติในคอลัมน์ F2
2. ป้อนข้อมูลลงใน H2 แล้ววันที่และเวลาจะแสดงในคอลัมน์ G2
โดยที่วันที่และเวลาที่แสดงจะต้องไม่เปลี่ยนเป็นวันและเวลาล่าสุด ถ้าหากป้อนข้อมูลใน Row ถัดไป (Row3)
ตอนแรกผมใช้สูตร =IF(AND(A2<>"",B2<>"",C2<>"",D2<>"",E2<>""),NOW(),"") พอขึ้นบรรทัดใหม่เวลาก็เปลี่ยนเหมือนกันหมดตามข้อมูลล่าสุด
ผมเลยลองเขียน VBA ได้สูตรดังนี้ครับ
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Value <> "" Then
A = Target.Offset(0, 1).Value
B = Target.Offset(0, 2).Value
C = Target.Offset(0, 3).Value
D = Target.Offset(0, 4).Value
If A <> "" And B <> "" And C <> "" And D <> "" Then
Target.Offset(0, 5) = Now()
Else
Target.Offset(0, 5) = ""
End If
ElseIf Target.Column = 2 And Target.Value <> "" Then
A = Target.Offset(0, -1).Value
B = Target.Offset(0, 1).Value
C = Target.Offset(0, 2).Value
D = Target.Offset(0, 3).Value
If A <> "" And B <> "" And C <> "" And D <> "" Then
Target.Offset(0, 4) = Now()
Else
Target.Offset(0, 4) = ""
End If
ElseIf Target.Column = 3 And Target.Value <> "" Then
A = Target.Offset(0, -2).Value
B = Target.Offset(0, -1).Value
C = Target.Offset(0, 1).Value
D = Target.Offset(0, 2).Value
If A <> "" And B <> "" And C <> "" And D <> "" Then
Target.Offset(0, 3) = Now()
Else
Target.Offset(0, 3) = ""
End If
ElseIf Target.Column = 4 And Target.Value <> "" Then
A = Target.Offset(0, -3).Value
B = Target.Offset(0, -2).Value
C = Target.Offset(0, -1).Value
D = Target.Offset(0, 1).Value
If A <> "" And B <> "" And C <> "" And D <> "" Then
Target.Offset(0, 2) = Now()
Else
Target.Offset(0, 2) = ""
End If
ElseIf Target.Column = 5 And Target.Value <> "" Then
A = Target.Offset(0, -4).Value
B = Target.Offset(0, -3).Value
C = Target.Offset(0, -2).Value
D = Target.Offset(0, -1).Value
If A <> "" And B <> "" And C <> "" And D <> "" Then
Target.Offset(0, 1) = Now()
Else
Target.Offset(0, 1) = ""
End If
End If
If Target.Column = 1 And Target.Value = "" Then
Target.Offset(0, 5) = ""
ElseIf Target.Column = 2 And Target.Value = "" Then
Target.Offset(0, 4) = ""
ElseIf Target.Column = 3 And Target.Value = "" Then
Target.Offset(0, 3) = ""
ElseIf Target.Column = 4 And Target.Value = "" Then
Target.Offset(0, 2) = ""
ElseIf Target.Column = 5 And Target.Value = "" Then
Target.Offset(0, 1) = ""
End If
If Target.Column = 8 And Target.Value <> "" Then
Target.Offset(0, -1) = Now()
ElseIf Target.Column = 8 And Target.Value = "" Then
Target.Offset(0, -1) = ""
End If
End Sub
แล้วเกิดปัญหาว่า หากผมทำการลบข้อมูลที่ป้อนเข้าไป ผมลบได้ที่ละช่องไม่สามารถที่จะลากแถบเลือกลบทีละหลายช่องได้
ขึ้นเตือนว่า Run Time ERROR >> Type missmatch >> End/Debug
เป็นเพราะอะไรและควรแก้ไขอย่างไรครับ รบกวนอาจารย์ช่วยเหลือด้วยครับ
You do not have the required permissions to view the files attached to this post.