snasui.com ยินดีต้อนรับ ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
Function EndRow(S As Object, C As String) As Long
EndRow = S.Range(C & Rows.Count).End(xlUp).Row
End Function
Sub Caljobtime()
For A = 6 To Module1.EndRow(Sheet6, "B")
If Sheet6.Range("B" & A).Value = Sheet6.Range("B" & A).Value And Sheet6.Range("C" & A).Value = Sheet6.Range("C" & A).Value And Sheet6.Range("D" & A).Value = "D1" Then
If Sheet6.Range("J" & A + 1).Value + Sheet6.Range("J" & A + 1).Value > Sheet6.Range("$K$3").Value Then
Sheet6.Range("K" & A).Value = ""
Else
Sheet6.Range("K" & A).Value = Sheet6.Range("J" & A).Value
End If
ElseIf Sheet6.Range("B" & A).Value = Sheet6.Range("B" & A).Value And Sheet6.Range("C" & A).Value = Sheet6.Range("C" & A).Value And Sheet6.Range("D" & A).Value = "D1" Then
If Sheet6.Range("J" & A + 1).Value + Sheet6.Range("J" & A + 1).Value < Sheet6.Range("$K$3").Value And Sheet6.Range("J" & A + 1).Value + Sheet6.Range("J" & A + 1).Value > Sheet6.Range("$L$3").Value Then
Sheet6.Range("L" & A).Value = ""
Else
Sheet6.Range("L" & A).Value = Sheet6.Range("J" & A).Value
End If
End If
Next A
End Sub
Function EndRow(S As Object, C As String) As Long
EndRow = S.Range(C & Rows.Count).End(xlUp).Row
End Function
Sub Caljobtime()
For A = 6 To Module1.EndRow(Sheet1, "B")
If Sheet1.Range("B" & A).Value = Sheet1.Range("B" & A).Value And Sheet1.Range("C" & A).Value = Sheet1.Range("C" & A).Value And Sheet1.Range("D" & A).Value = "D1" Then
If Sheet1.Range("J" & A + 1).Value + Sheet1.Range("J" & A + 1).Value > Sheet1.Range("$K$3").Value Then
Sheet1.Range("K" & A).Value = ""
Else
Sheet1.Range("K" & A).Value = Sheet1.Range("J" & A).Value
End If
ElseIf Sheet1.Range("B" & A).Value = Sheet1.Range("B" & A).Value And Sheet1.Range("C" & A).Value = Sheet1.Range("C" & A).Value And Sheet1.Range("D" & A).Value = "D1" Then
If Sheet1.Range("J" & A + 1).Value + Sheet1.Range("J" & A + 1).Value < Sheet1.Range("$K$3").Value And Sheet1.Range("J" & A + 1).Value + Sheet1.Range("J" & A + 1).Value > Sheet1.Range("$L$3").Value Then
Sheet1.Range("L" & A).Value = ""
Else
Sheet1.Range("L" & A).Value = Sheet1.Range("J" & A).Value
End If
End If
Next A
อันแรกผิด ใช้อันนี้ครับ
You do not have the required permissions to view the files attached to this post.
Sub CalJobTime1()
Dim l As Long, x As Double
With Worksheets("Sheet1")
For l = 6 To .Range("b" & .Rows.Count).End(xlUp).Row
If .Range("d" & l).Value = "D1" Then
x = Application.SumIfs(.Range("j6:j" & l), .Range("b6:b" & l), _
.Range("b" & l), .Range("c6:c" & l), .Range("c" & l), _
.Range("d6:d" & l), .Range("d" & l))
If x > 460 Then
.Range("k" & l).Value = ""
Else
.Range("k" & l).Value = .Range("j" & l).Value
End If
Else
.Range("k" & l).Value = 0
End If
Next l
End With
End Sub
Sub CalJobTime1()
Dim l As Long, x As Double
With Worksheets("Sheet1")
For l = 6 To .Range("b" & .Rows.Count).End(xlUp).Row
If .Range("d" & l).Value = "D1" Then
x = Application.SumIfs(.Range("j6:j" & l), .Range("b6:b" & l), _
.Range("b" & l), .Range("c6:c" & l), .Range("c" & l), _
.Range("d6:d" & l), .Range("d" & l))
If x > 460 Then
.Range("k" & l).Value = ""
Else
.Range("k" & l).Value = .Range("j" & l).Value
End If
Else
.Range("k" & l).Value = 0
End If
Next l
End With
End Sub