Page 3 of 8

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

Posted: Fri Apr 22, 2011 11:36 am
by suka
ขอบคุณค่ะ อาจารย์ช่วยปรับให้ตั้งหลายจุดทดลองใช้งานแล้ว ใช้ได้ดีตามที่ต้องการค่ะ

ขอบพระคุณมากๆๆค่ะ

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

Posted: Fri Sep 09, 2011 5:26 pm
by suka
สวัสดีค่ะอาจารย์
ขอรบกวนอาจารย์ช่วยด้วยค่ะ จากไฟล์แนบที่ชีท Report2 ต้องการให้ทำรายงานให้ได้เหมือนกับชีท PrintReport ค่ะ
ได้ลองทำดูด้วยตัวเองแล้วไม่สามารถทำค่ะ ที่ชีท Report2 ต้องการให้แสดงแค่ตารางที่มีข้อมูลเท่านั้นน่ะค่ะ
ขอรบกวนนะคะขอบคุณมากๆค่ะ

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

Posted: Fri Sep 09, 2011 10:53 pm
by snasui
:D ถ้าหมายถึงการเขียน Code เพื่อให้ซ่อน ยกเลิกการซ่อน ที่บอกว่าลองทำเองแล้วนั้นไม่ทราบว่าเขียน Code ไว้ตรงไหนครับ ถ้ายังไม่แนบมาด้วย ให้แนบมากับไฟล์ด้วยครับ

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

Posted: Sat Sep 10, 2011 11:19 am
by suka
อาจารย์คะ ที่ไม่แนบ Code VBA มาเพราะลองแล้วไม่ได้ค่ะ ลองหลายรอบแล้วเกิด Error จนงงค่ะ
ไฟล์นี้ได้แนบ Code ล่าสุดที่ลองผิดมาด้วยค่ะ จากไฟล์เดิมที่ส่งมาก่อนหน้านี้ที่ชีท PrintReport ใช้ได้ แต่พอลองใส่ Code
ชีท Report2 ใช้ได้ แต่ PrintReport กลับใช้ไม่ได้ ค่ะ

รบกวนอาจารย์นะคะขอบคุณค่ะ

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

Posted: Sat Sep 10, 2011 11:27 am
by snasui
:D เปลี่ยน Code เดิมเป็นตามด้านล่างครับ ลองสังเกตว่าเปลี่ยนตรงไหน :mrgreen:

Code: Select all

Sub HideUnhide()
Dim r As Range
Dim i As Integer
Application.ScreenUpdating = False
With ActiveSheet
    .Range("F1:AI1").EntireColumn.Hidden = True
    i = (.Range("C3") - .Range("C2")) * 1 + 1
    If i < 0 Then
        MsgBox "Please check date."
        Exit Sub
    End If
    Set r = .Range("F1").Resize(1, i)
End With
If r.Count = 1 Then
    Exit Sub
End If
r.EntireColumn.Hidden = False
Application.ScreenUpdating = True
End Sub

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

Posted: Sat Sep 10, 2011 1:14 pm
by suka
อาจารย์คะ
ช่างมหัศจรรย์เหลือเชื่อนะคะ ใช้เวลาคิดมากมายคิดเป็นวันยังทำไม่ได้
อาจารย์จัดแค่เปลี่ยน With Worksheets("PrintReport") เป็น With Worksheets("PrintReport") เท่านี้เองเหลือเชื่อจริงๆค่ะ

อาจารย์คะขอรบกวนอีกเรื่องค่ะ
ที่ชีท Template จะทำอย่างไรให้นำข้อมูลจำนวนเท่าที่ชีท Form บันทึก ไปไว้ที่ชีท database คะ
ตอนใช้งานจริงแต่ละครั้งจะใช้จำนวนเซลล์มากกว่า 600 หรืออาจน้อยกว่าค่ะ แต่ไฟล์นี้ทำไว้ที่ 612 ค่ะ
ขอบพระคุณมากค่ะ

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

Posted: Sat Sep 10, 2011 1:39 pm
by snasui
suka wrote:อาจารย์คะ
ช่างมหัศจรรย์เหลือเชื่อนะคะ ใช้เวลาคิดมากมายคิดเป็นวันยังทำไม่ได้
อาจารย์จัดแค่เปลี่ยน With Worksheets("PrintReport") เป็น With Worksheets("PrintReport") เท่านี้เองเหลือเชื่อจริงๆค่ะ
คงไม่ใช่ครับ เพราะหากทำเช่นนั้นแสดงว่าไม่ได้เปลี่ยนค่าใด ๆ

ชีท Template เซลล์ A2 สูตรไม่ถูกต้องครับ

กรณีปรับ Code ให้เพิ่มลดตามข้อมูลดูตัวอย่างตามด้านล่างครับ

Code: Select all

Sub PasteData()
Dim rSource As Range
Dim rTarget As Range
With Worksheets("Template")
    Set rSource = .Range("A2:Q2").Resize(.Range("T1"))
End With
Set rTarget = Worksheets("Database").Range("A65536").End(xlUp).Offset(1, 0)
    rSource.Copy
    rTarget.PasteSpecial xlPasteValues
Application.CutCopyMode = False
End Sub

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

Posted: Sat Sep 10, 2011 4:06 pm
by suka
อาจารย์คะ
ช่างมหัศจรรย์เหลือเชื่อนะคะ ใช้เวลาคิดมากมายคิดเป็นวันยังทำไม่ได้
อาจารย์จัดแค่เปลี่ยน With Worksheets("PrintReport") เป็น With Worksheets("PrintReport") เท่านี้เองเหลือเชื่อจริงๆค่ะ

ขอแก้คำผิดจาก With Worksheets("PrintReport") เป็น With ActiveSheet ค่ะ

อาจารย์คะจากไฟล์ตัวอย่างที่ส่ง Code ตามข้างล่างนี้

Code: Select all

Sub PasteData()
Dim rSource As Range
Dim rTarget As Range
Set rSource = Worksheets("Template").Range("A2:Q612")
Set rTarget = Worksheets("Database").Range("A65536").End(xlUp).Offset(1, 0)
    rSource.Copy
    rTarget.PasteSpecial xlPasteValues
Application.CutCopyMode = False
End Sub
ได้ลองใส่ Code เป็นตามข้างล่าง

Code: Select all

Sub PasteData()
Dim rSource As Range
Dim rTarget As Range
With Worksheets("Template")
Set rSource = .Range("A2:Q612").Resize(.Range("D2"))
End With
Set rTarget = Worksheets("Database").Range("A65536").End(xlUp).Offset(1, 0)
    rSource.Copy
    rTarget.PasteSpecial xlPasteValues
Application.CutCopyMode = False
End Sub
เช่นเดิมค่ะ Code Error ค่ะ มาขอความช่วยเหลือจากอาจารย์ อีกแล้วค่ะ

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

Posted: Sat Sep 10, 2011 7:22 pm
by snasui
:D ไม่ทราบว่าต้องการทำอะไรครับ กรณีใช้กับไฟล์เดิม เหตุใดไม่ใช้ Code ที่ผมส่งไปให้ครับ เนื่องจากผมได้ปรับให้ใช้กับไฟล์ตัวอย่างแล้ว

การเปลี่ยนเป็น

Code: Select all

Set rSource = .Range("A2:Q612").Resize(.Range("D2"))
ทราบความหมายหรือไม่ครับว่าหมายความว่าอย่างไร :?:

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

Posted: Sun Sep 11, 2011 7:44 pm
by suka
อาจารย์คะ Code ที่ให้มาตรงตามที่ต้องการแล้วค่ะ ก่อนหน้านี้สับสนมากไปเลยไม่ทันคิดถึง คอลัมน์ R:T ที่ชีท Tempplate จึงคิดว่า Code

Code: Select all

Set rSource = .Range("A2:Q2").Resize(.Range("T1"))
นี้ไม่น่าจะใช่ของไฟล์นี้จึงไม่ได้นำมาใช่ค่ะ
ชีท Template เซลล์ A2 สูตรไม่ถูกต้องครับ
หลังจากปรับสูตรทำผิดที่ชีท Template เซลล์ A2 และนำ Code ล่าสุดที่อาจารย์ให้มาใช้ได้ดีตรงตามที่ต้องการค่ะ
ขอบพระคุณมากค่ะ ขอให้อาจารย์มีสุขภาพทีดี พบแต่สิ่งดีๆมีความสุขมากๆ ค่ะ

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

Posted: Tue Oct 18, 2011 9:11 pm
by suka
อาจารย์คะ มีปัญหาขอคำแนะนำค่ะ จากไฟล์ตัวอย่างที่ชีท Form ได้บันทึก Macro ให้เพิ่มแถวและคัดลอกสูตรให้กับแถวที่เพิ่มเข้ามา
ต้องการสร้างปุ่มเพื่อคลิก ปัญหาคือที่ CommandButton1 ไม่สามารถทำให้ใช้กับแมโครได้ค่ะ
ขอบคุณค่ะ

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

Posted: Tue Oct 18, 2011 10:47 pm
by snasui
:D ลองตามนี้ครับ
  • เข้าเมนู View
  • เลือก Toolbars > Control Toolbox
  • คลิกปุ่ม Design Mode (เครื่องมืออันแรกสุด)
  • คลิกขวา Command Button ที่สร้างไว้แล้ว > View Code โปรแกรมจะไปยังตำแหน่งในการเขียน Code
  • ไป Copy Code Macro ที่สร้างไว้แล้วมาวางไว้ที่ Code ของ Command Button ในข้อ 4
  • กลับมายัง Excel > คลิกปุ่ม Design Mode > ปิด Toolbar > ทดสอบคลิก Command Button > สังเกตดูผล
ถ้าจะให้สะดวกให้เลือกสร้าง Button จาก Forms แทนเลือกสร้างจาก Control Toolbox ครับ

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

Posted: Wed Oct 19, 2011 9:45 am
by suka
ขอบคุณค่ะอาจารย์ ทำได้แล้วค่ะ

ขอรบกวนอีกเรื่องค่ะ ที่ชีท Form เซลล์ AB9 ไม่ต้องการให้เป็น #N/A หากที่ชีท Database คอลัมล์ S ยังไม่มีข้อมูลจะแก้ได้อย่างไรคะ

ขอบพระคุณมากๆๆค่ะ

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

Posted: Wed Oct 19, 2011 10:39 am
by snasui
:D ที่เซลล์ AB5 คีย์สูตรตามด้านล่างครับ

=IF(ISNA(AC5),"",AC5-Y5+AA5)

Enter > Copy ลงด้านล่าง

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

Posted: Wed Oct 19, 2011 11:49 am
by suka
ขอบคุณมากค่ะอาจารย์ :lol:

อาจารย์คะ Code ด้านล่างนี้เมื่อคลิกปุ่มบันทึกข้อมูลจะเคลียร์เซลล์ H5:S9 และ Y5:AA9 ในชีท Form ให้ว่าง

Code: Select all

Sub PasteData()
Dim rSource As Range
Dim rTarget As Range
With Worksheets("Template")
    Set rSource = .Range("A2:S2").Resize(.Range("V1"))
End With
Set rTarget = Worksheets("Database").Range("A65536").End(xlUp).Offset(1, 0)
    rSource.Copy
    rTarget.PasteSpecial xlPasteValues
Application.CutCopyMode = False
Sheets("Form").Range("H5:S9,Y5:AA9").ClearContents
End Sub
หากจะนำ Code ด้านล่างนี้ออกจากปุ่มบันทึกข้อมูล

Code: Select all

Sheets("Form").Range("H5:S9,Y5:AA9").ClearContents
แล้วสร้าง Button ใหม่เพิ่ม เพื่อคลิกเมื่อต้องการเคลียร์เซลล์ H5:S9 และ Y5:AA9 ในชีท Form ให้ว่าง
จะต้องปรับ Code อย่างไรเพื่อให้ใช้กับปุ่มที่สร้างขึ้นใหม่คะ

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

Posted: Wed Oct 19, 2011 11:53 am
by snasui
:D ลองใช้แบบไม่ต้องปรับแล้วยังครับ หากใช้แล้วมีปัญหาค่อยแจ้งมาอีกทีครับ

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

Posted: Wed Oct 19, 2011 1:06 pm
by suka
ค่ะอาจารย์ ปุ่มเคลียร์ที่จริงไม่ต้องปรับก็ใช้ได้ รีบถามก่อนลองใช้ค่ะ

ตอนนี้มีปัญหากับปุ่มแทรกแถวมาขออาจารย์ช่วยด้วยค่ะ ความต้องการคือเมื่อคลิกแล้วให้แทรกแถวเหนือบรรทัดที่คลิกแล้วคัดลอกสูตรให้กับบรรทัดใหม่ที่เพิ่มเข้ามาทั้งที่ชีท Form และที่ชีท Template ค่ะ
การคลิกมิใช่จำกัดแค่เซลล์ A9:AL9 อาจจะมีถึงเซลล์ A60:AL60 มากกว่าหรือน้อยกว่านี้ค่ะ

ขอบคุณค่ะ

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

Posted: Wed Oct 19, 2011 1:23 pm
by snasui
:D มีเหตุผลใดต้องแทรกแถวครับ หากนำไปต่อด้านล่างข้อมูลจะมีประเด็นอะไรหรือไม่ครับ

และ Code ที่เขียนมาเองแล้วนั้นอยู่ที่ Module ไหน ชื่อ Procedure ใดครับ :?:

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

Posted: Wed Oct 19, 2011 2:01 pm
by suka
ค่ะอาจารย์ นำไปต่อด้านล่างข้อมูลได้ค่ะ

Code ที่เขียนอยู่ที่ Module2 ชื่อ Macro16 ค่ะ

ขอบคุณค่ะ

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

Posted: Wed Oct 19, 2011 2:15 pm
by snasui
:D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Sub Macro16()
    Range("A" & Rows.Count).End(xlUp) _
        .Resize(2, Columns.Count).FillDown
End Sub