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

ถ้าหมายถึงการเขียน 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

เปลี่ยน Code เดิมเป็นตามด้านล่างครับ ลองสังเกตว่าเปลี่ยนตรงไหน
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

ไม่ทราบว่าต้องการทำอะไรครับ กรณีใช้กับไฟล์เดิม เหตุใดไม่ใช้ 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

ลองตามนี้ครับ
- เข้าเมนู 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

ที่เซลล์ AB5 คีย์สูตรตามด้านล่างครับ
=IF(ISNA(AC5),"",AC5-Y5+AA5)
Enter > Copy ลงด้านล่าง
Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม
Posted: Wed Oct 19, 2011 11:49 am
by suka
ขอบคุณมากค่ะอาจารย์
อาจารย์คะ 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

ลองใช้แบบไม่ต้องปรับแล้วยังครับ หากใช้แล้วมีปัญหาค่อยแจ้งมาอีกทีครับ
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

มีเหตุผลใดต้องแทรกแถวครับ หากนำไปต่อด้านล่างข้อมูลจะมีประเด็นอะไรหรือไม่ครับ
และ 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

ลองปรับ Code เป็นตามด้านล่างครับ
Code: Select all
Sub Macro16()
Range("A" & Rows.Count).End(xlUp) _
.Resize(2, Columns.Count).FillDown
End Sub