:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

Code หาเวลา Down Time เป็นนาที

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
User avatar
pnet
Member
Member
Posts: 4
Joined: Thu Mar 24, 2011 4:25 pm

Code หาเวลา Down Time เป็นนาที

#1

Post by pnet »

สวัสดีค่ะ อาจารย์
รบกวนอาจารย์ช่วยแนะนำ แก้ไขให้หน่อยค่ะ
คือ ตาม file ที่แนบมา ติดอยู่ 3 ข้อ
1. ในช่อง TOTAL (MIN) > หาเวลาที่สูญเสียไปเป็น นาที
2. ในช่อง G. TOTAL /SHIFT(MIN) > รวมเวลาที่สูญเสียไปทั้งหมด (บวกมาเรื่อยๆ) เป็น นาที
3. ที่ Label Timer > ให้แสดงเวลา ไปเรื่อยๆค่ะ (ถ้าไม่ได้ไม่เป็นไรค่ะ)

**เพิ่งเริ่มหัดเขียน vba ,ยังไม่เป็นค่ะเลย งง งง

ขอบพระคุณอย่างสูงค่ะ
pnet :)
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: Code หาเวลา Down Time เป็นนาที

#2

Post by snasui »

การให้แสดงเป็นนาทีสามารถใช้การจัด Format ได้ครับ โดย

๑. คลุม G4:H5
๒. คลิกขวา > Format Cells > แถบ Number เลือก Custom > ที่ช่อง Type: คีย์ [mm] > OK

สำหรับสูตรหาค่าสะสมถูกต้องแล้วครับ

ดูไฟล์แนบประกอบครับ
You do not have the required permissions to view the files attached to this post.
User avatar
pnet
Member
Member
Posts: 4
Joined: Thu Mar 24, 2011 4:25 pm

Re: Code หาเวลา Down Time เป็นนาที

#3

Post by pnet »

ขอบคุณค่ะเรื่อง format นาที :)
ต้องขอโทษที่อธิบายคำถามไม่ละเอียด
คือว่า ต้องการให้ คำนวณเวลาอัตโนมัติ ไปใส่ใน Sheet excel ช่อง TOTAL (MIN) กับ G. TOTAL หลัง จาก Save ที่ User Form ค่ะ
เพราะ เดี๋ยวต้องลบ txtTimetotal กับ txtGtotal ออกค่ะ
ให้ User key เฉพาะ เวลา Time FROM กับ time TO

ไม่รู้ว่าต้องพิมพืคำสั่งใน VB project ว่ายังไงค่ะ

ขอบคุณมากค่ะอาจารย์
Pnet :)

Code: Select all

Private Sub cmdExit_Click()
    Unload Me
End Sub
Private Sub cmdClear_Click()
'Clear the Form
    For Each ctl In Me.Controls
    If TypeName(ctl) = "TextBox" Or TypeName(ctl) = "ComboBox" Then
        ctl.Value = ""
    End If
Next ctl
End Sub
Private Sub cmdSave_Click()
    Dim RowCount As Long
    Dim temprow As Long
    Dim ctl As Control
    'init row
    temprow = 1
' Check user input
    If Me.txtSparepartchange.Value = "" Then
        MsgBox "Please Scan Barcode.", vbExclamation, "Spare Part Change"
        Me.txtSparepartchange.SetFocus
        Exit Sub
    End If
    If Me.DTPicker1.Value = "" Then
        MsgBox "Please Enter a date.", vbExclamation, "Spare Part Change"
        Me.txtSparepartchange.SetFocus
        Exit Sub
    End If
    If Me.cboTeam.Value = "" Then
        MsgBox "Please Select Team.", vbExclamation, "Spare Part Change"
        Me.txtSparepartchange.SetFocus
        Exit Sub
    End If
    If Me.txtTimefrom.Value = "" Then
        MsgBox "Please Key Time From.", vbExclamation, "Spare Part Change"
        Me.txtSparepartchange.SetFocus
        Exit Sub
    End If
    If Me.txtTimeto.Value = "" Then
        MsgBox "Please Key Time To.", vbExclamation, "Spare Part Change"
        Me.txtSparepartchange.SetFocus
        Exit Sub
    End If
    If Me.cboProblem.Value = "" Then
        MsgBox "Please Select M/C Problem.", vbExclamation, "Spare Part Change"
        Me.txtSparepartchange.SetFocus
        Exit Sub
    End If
    If Me.cboModel.Value = "" Then
        MsgBox "Please Select Model.", vbExclamation, "Spare Part Change"
        Me.txtSparepartchange.SetFocus
        Exit Sub
    End If
    If Me.txtRepair.Value = "" Then
        MsgBox "Please Key Repair Detail.", vbExclamation, "Spare Part Change"
        Me.txtSparepartchange.SetFocus
        Exit Sub
    End If
    If Me.optOK.Value = "" Then
        MsgBox "Please check OK or NG.", vbExclamation, "Spare Part Change"
        Me.txtSparepartchange.SetFocus
        Exit Sub
    End If
    If Me.cboNG.Value = "" Then
        MsgBox "Please Key Q'ty NG Setting.", vbExclamation, "Spare Part Change"
        Me.txtSparepartchange.SetFocus
        Exit Sub
    End If
    If Me.cboBy.Value = "" Then
        MsgBox "Please Key Repair By.", vbExclamation, "Spare Part Change"
        Me.txtSparepartchange.SetFocus
        Exit Sub
    End If
    If Not IsNumeric(Me.cboNumber.Value) Then
        MsgBox "The Amount box must contain a number.", vbExclamation, "Spare Part Change"
        Me.cboNumber.SetFocus
        Exit Sub
    End If
    While Worksheets(2).Cells(temprow, 1) <> "" And Trim(Worksheets(2).Cells(temprow, 1)) <> Me.txtSparepartchange.Text
    temprow = temprow + 1
    Wend
' Write data to worksheet
    RowCount = Worksheets("Sheet1").Range("A1").CurrentRegion.Rows.Count
    With Worksheets("Sheet1").Range("A1")
        .Offset(RowCount, 0).Value = Me.txtSparepartchange.Value
        .Offset(RowCount, 1).Value = Worksheets(2).Cells(temprow, 2) 'Me.txtCodemodelsizetype.Value
        .Offset(RowCount, 2).Value = Format(DTPicker1.Value, "dd/mm/yyyy")
        .Offset(RowCount, 3).Value = Me.cboTeam.Value
        .Offset(RowCount, 4).Value = Me.txtTimefrom.Value
        .Offset(RowCount, 5).Value = Me.txtTimeto.Value
        .Offset(RowCount, 6).Value = Me.txtTimetotal.Value
        .Offset(RowCount, 7).Value = Me.txtGtotal.Value
        .Offset(RowCount, 8).Value = Me.cboBrother.Value & Me.cboNumber.Value
        .Offset(RowCount, 9).Value = Me.cboProblem.Value
        .Offset(RowCount, 10).Value = Me.cboModel.Value
        .Offset(RowCount, 11).Value = Me.txtRepair.Value
    If Me.optOK.Value Then
        .Offset(RowCount, 12).Value = "OK"
    End If
    If Me.optNG.Value Then
        .Offset(RowCount, 12).Value = "NG"
    End If
        .Offset(RowCount, 13).Value = Me.cboNG.Value
        .Offset(RowCount, 14).Value = Me.cboBy.Value
        .Offset(RowCount, 15).Value = Format(Now, "dd/mm/yyyy hh:nn:ss")
    End With
'Clear the form
    For Each ctl In Me.Controls
    If TypeName(ctl) = "TextBox" Or TypeName(ctl) = "ComboBox" Then
        ctl.Value = ""
    End If
Next ctl
End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: Code หาเวลา Down Time เป็นนาที

#4

Post by snasui »

ลองเพิ่ม Code ตามด้านล่างเข้าไปช่วยคำนวณครับ

Code: Select all

Sub TotalMin()
Dim rTotal As Range
Set rTotal = Worksheets("Sheet1").Range("G4")
Do While rTotal.Offset(0, -1) <> ""
    rTotal = (rTotal.Offset(0, -1) - rTotal.Offset(0, -2)) * 24 * 60
        If rTotal.Offset(0, 1).Row <> 4 Then
            rTotal.Offset(0, 1) = rTotal + rTotal.Offset(-1, 1)
        Else
            rTotal.Offset(0, 1) = rTotal
        End If
    Set rTotal = rTotal.Offset(1, 0)
Loop
End Sub
User avatar
pnet
Member
Member
Posts: 4
Joined: Thu Mar 24, 2011 4:25 pm

Re: Code หาเวลา Down Time เป็นนาที

#5

Post by pnet »

ขอบคุณค่ะ อาจารย์
ตอนแรก run ไม่ได้ มันไม่ show เวลาที่คำนวณให้ เพราะไม่รู้ว่า ต้อง Call TotalMin ก่อน :oops:
แต่พอลองแล้วก็ติดปัญหาอีกว่า เวลา show เป็น 4320 ต้อง เลือก format อย่างอื่นถึงเป็นนาทีน่ะค่ะ

TIME G. TOTAL
FROM TO TOTAL (MIN) SHIFT(MIN)
12:00 12:03 4320 4320
12:11 12:22 15840 20160
12:30 12:35 7200 27360

ไม่รู้ว่าทำถูกหรือปล่าว
ยังไงก็ขอบพระคุณอย่างสูงค่ะ
pnet
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: Code หาเวลา Down Time เป็นนาที

#6

Post by snasui »

:lol: ไม่เข้าใจเรื่อง Show เป็น 4320 ครับ

ช่วยแนบไฟล์ตัวอย่างที่ Update แล้วมาให้ดูด้วยครับ และอธิบายเพิ่มด้วยว่าเมื่อกำหนดเป็นค่าใดแล้วได้ค่าใด และที่ต้องการให้เป็นคือค่าใด
Post Reply