ขอคำแนะนำเรื่อง ล้างข้อมูล / VBA (ไม่รู้ว่าเรียกถูกต้องหรือเปล่า )

504 views
Skip to first unread message

var...@th.nyklogistics.com

unread,
Aug 5, 2011, 5:12:43 AM8/5/11
to excel_...@googlegroups.com

เรียนอาจารย์สำเริง / ผู้รู้ทุกท่านครับ

ขอคำแนะนำด้วยนะครับ
1. ผมมีคำถามจากตัวอย่าง CD2 หัวข้อที่ 226 / เรื่องการล้างข้อมูลกับ -  สั่งพิมพ์ ว่าทำอย่างไรครับ
2. VBA (ไม่รู้ว่าเรียกถูกหรือเปล่้า) เป็นการติกเลือกข้อมูลในจุด และมีข้อมูลขึ้นมา / ว่าทำอย่างไรครับ


 
Best regards,
==========================
Warit  Karniti (Export Dept.)
Nyk Logistics (Thailand ) Co.,Ltd
T. 02-206-8377
F. 02-206-8161-2
พอเพียง2_Ans.xls

นายประยงค์ แสนนวล

unread,
Aug 5, 2011, 11:54:56 PM8/5/11
to excel_...@googlegroups.com
เรียน สมาชิกและท่านผู้รู้ครับ
ท่านใดแยกคอลัมน์แบบนี้ได้บ้างครับ ขอความอนุเคราะห์ด้วยครับ
 
ขอบคุณมากครับ

เมื่อ 5 สิงหาคม 2554, 16:12, <var...@th.nyklogistics.com> เขียนว่า:
--
******************
|= คุณได้รับเมล์นี้ เพราะคุณเป็นสมาชิกกลุ่ม "Excel_for_HR" ของ อ.สำเริง ยิ่งถาวรสุข
|= ส่งคำถามเข้ากลุ่มนี้ ทางอีเมลที่ excel_...@googlegroups.com (ขอความกรุณางดส่งฟอร์เวิร์ดเมล์ที่ไม่เกี่ยวข้อง)
|= หากต้องการยกเลิกการเป็นสมาชิก ส่งเมล์หา อ.สำเริง โดยตรงที่ ysam...@gmail.com
|= ดูตัวเลือกเพิ่มเติมที่
http://groups.google.co.th/group/excel_for_hr?hl=th

���� ������� ����Է�����.xls

Samroeng

unread,
Aug 6, 2011, 5:22:36 AM8/6/11
to excel_...@googlegroups.com
เรียน คุณ วริษฐ์

1. การจะสร้างปุ่มบันทึกข้อมูล ล้างข้อมูล หรือสั่งพิมพ์แบบฟอร์ม วิธีง่ายๆ ก็คือ การบันทึก Macro เพื่อให้ได้ code VBA ก่อน จากนั้น ก็อาจจะทำการปรับแต่ code ตามต้องการ (ดูตัวอย่าง code ของไฟล์ที่คุณแนบมา ด้วยการคลิกขวาที่ชื่อชีท เลือก View code แล้วดับเบิลคลิกที่ Module1) โดยหลักการแล้ว code จะคล้ายๆ กัน แต่ขึ้นอยู่กับลักษณะของฟอร์ม และรูปแบบฐานข้อมูล ในงานจริงด้วย

คุณควรเริ่มต้นศึกษาการบันทึก Macro ง่ายๆ ก่อน แล้วก็ศึกษาเรื่อง code VBA ไม่แนะนำให้ไป copy code คนอื่น หรือขอให้คนอื่นทำ code ให้ โดยที่ตัวเองไม่เข้าใจ เพราะนอกจากอาจจะมาใช้ทันทีไม่ได้ (เพราะลักษณะงานต่างกันแล้ว) เราก็ไม่ยังไม่เข้าใจ แก้ไขดัดแปลงเอง ก็ไม่ได้


2. สำหรับคำถามในข้อ 2 นี้ ไม่เข้าใจครับ


อ.สำเริง



Mr.Samroeng Yingthawornsuk
Tel. (66)2-347-1066, (66)81-423-9828  Fax.(66)2-347-1067
มีการศึกษา (Education) ไม่ได้แปลว่า มีความรู้ (Knowledge)

More Information, http://www.e-hrit.com

 

Excel for HR Book

Contact Me Facebook Twitter
Chat Skype aek.samroeng MSN ysam...@hotmail.com
--

var...@th.nyklogistics.com

unread,
Aug 9, 2011, 4:41:43 AM8/9/11
to excel_...@googlegroups.com, excel_...@googlegroups.com

เรียนอาจารย์สำเริงที่เคารพครับ

ก่อนอื่นต้องขอโทษด้วยนะครับที่ตอบ mail ช้าครับ / เพราะว่าช่วงนี้อากาศเปลี่ยนแปลง
บ่อยครับ ( ไม่ค่อยสบาย )

ขอบคุณอาจารย์มาก ๆ ครับที่ให้คำแนะนำมา / ผมจะไปทำลองทำดูก่อนนะครับถ้าติดตรงจุดไหน
อาจจะต้องรบกวนอาจารย์อีกครั้งครับ

( ปล. อากาศเปลี่ยนแปลงอยู่บ่อยขอให้สมาชิกทุกๆคนรักษาสุขภาพกันด้วยนะครับ )

Best regards,
==========================
Warit  Karniti (Export Dept.)
Nyk Logistics (Thailand ) Co.,Ltd
T. 02-206-8377
F. 02-206-8161-2



Samroeng <ysam...@gmail.com>
Sent by: excel_...@googlegroups.com

06/08/2011 16:22

Please respond to
excel_...@googlegroups.com

To
excel_...@googlegroups.com
cc
Subject
Re: [Excel4HR::1800] ขอคำแนะนำเรื่อง ล้างข้อมูล / VBA (ไม่รู้ว่าเรียกถูกต้องหรือเปล่า )





เรียน คุณ วริษฐ์

1. การจะสร้างปุ่มบันทึกข้อมูล ล้างข้อมูล หรือสั่งพิมพ์แบบฟอร์ม วิธีง่ายๆ ก็คือ การบันทึก Macro เพื่อให้ได้ code VBA ก่อน จากนั้น ก็อาจจะทำการปรับแต่ code ตามต้องการ (ดูตัวอย่าง code ของไฟล์ที่คุณแนบมา ด้วยการคลิกขวาที่ชื่อชีท เลือก View code แล้วดับเบิลคลิกที่ Module1) โดยหลักการแล้ว code จะคล้ายๆ กัน แต่ขึ้นอยู่กับลักษณะของฟอร์ม และรูปแบบฐานข้อมูล ในงานจริงด้วย

คุณควรเริ่มต้นศึกษาการบันทึก Macro ง่ายๆ ก่อน แล้วก็ศึกษาเรื่อง code VBA ไม่แนะนำให้ไป copy code คนอื่น หรือขอให้คนอื่นทำ code ให้ โดยที่ตัวเองไม่เข้าใจ เพราะนอกจากอาจจะมาใช้ทันทีไม่ได้ (เพราะลักษณะงานต่างกันแล้ว) เราก็ไม่ยังไม่เข้าใจ แก้ไขดัดแปลงเอง ก็ไม่ได้


2. สำหรับคำถามในข้อ 2 นี้ ไม่เข้าใจครับ


อ.สำเริง


Mr.Samroeng Yingthawornsuk
Tel. (66)2-347-1066, (66)81-423-9828  Fax.(66)2-347-1067

มีการศึกษา
(Education) ไม่ได้แปลว่า มีความรู้ (Knowledge)
More Information, http://www.e-hrit.com
 

Contact Me
Chat
aek.samroeng ysam...@hotmail.com
Signature powered by WiseStamp 

var...@th.nyklogistics.com

unread,
Sep 15, 2011, 8:21:03 AM9/15/11
to excel_...@googlegroups.com, excel_...@googlegroups.com

เรียนอาจารย์สำเริง

อ้างถึงคำแนะนำของอาจารย์  ขอขอบคุณมากครับ/ตอนนี้ผมได้เริ่มศึกษาการใช้ Macro , VBA  แบบง่าย ๆ มาดูบ้างแล้ว
(จากหนังสือ 2 เล่ม ) เพื่อจะเอาไปประยุกต์ใช้กับงาน / แต่วันนี้ผมเริ่มทำตามหนังสือ แต่ผลลัพธ์ที่ได้ ไม่เป็นอย่างหนังสือครับ
และก็เริ่มตรวจสอบตามคำแนะนำของอาจารย์แล้วก็ยังไม่สำเร็จ

สิ่งที่ตรวจสอบเบื้องต้นไปแล้ว
1. การกำหนด Macro Security  / ผมเลือกเป็นแบบ Low
2. ทดสอบเลือกคลิกปุ่ม Run Macro - Run /  มีลูกศร+แทบสีเหลืองขึ้นที่คำว่า Sub SetCode 1()

สิ่งที่ต้องการ
1. ต้องการให้กดปุ่ม Set Code 1 และ ปุ่ม Clear Code / ทำการแสดงผลลัพธ์ D2:D13
 


Best regards,
==========================
Warit  Karniti (Export Dept.)
Nyk Logistics (Thailand ) Co.,Ltd
T. 02-206-8377
F. 02-206-8161-2



Samroeng <ysam...@gmail.com>
Sent by: excel_...@googlegroups.com

06/08/2011 16:22

Please respond to
excel_...@googlegroups.com

To
excel_...@googlegroups.com
cc
Subject
Re: [Excel4HR::1800] ขอคำแนะนำเรื่อง ล้างข้อมูล / VBA (ไม่รู้ว่าเรียกถูกต้องหรือเปล่า )





เรียน คุณ วริษฐ์

1. การจะสร้างปุ่มบันทึกข้อมูล ล้างข้อมูล หรือสั่งพิมพ์แบบฟอร์ม วิธีง่ายๆ ก็คือ การบันทึก Macro เพื่อให้ได้ code VBA ก่อน จากนั้น ก็อาจจะทำการปรับแต่ code ตามต้องการ (ดูตัวอย่าง code ของไฟล์ที่คุณแนบมา ด้วยการคลิกขวาที่ชื่อชีท เลือก View code แล้วดับเบิลคลิกที่ Module1) โดยหลักการแล้ว code จะคล้ายๆ กัน แต่ขึ้นอยู่กับลักษณะของฟอร์ม และรูปแบบฐานข้อมูล ในงานจริงด้วย

คุณควรเริ่มต้นศึกษาการบันทึก Macro ง่ายๆ ก่อน แล้วก็ศึกษาเรื่อง code VBA ไม่แนะนำให้ไป copy code คนอื่น หรือขอให้คนอื่นทำ code ให้ โดยที่ตัวเองไม่เข้าใจ เพราะนอกจากอาจจะมาใช้ทันทีไม่ได้ (เพราะลักษณะงานต่างกันแล้ว) เราก็ไม่ยังไม่เข้าใจ แก้ไขดัดแปลงเอง ก็ไม่ได้


2. สำหรับคำถามในข้อ 2 นี้ ไม่เข้าใจครับ


อ.สำเริง


Mr.Samroeng Yingthawornsuk
Tel. (66)2-347-1066, (66)81-423-9828  Fax.(66)2-347-1067

มีการศึกษา
(Education) ไม่ได้แปลว่า มีความรู้ (Knowledge)
More Information, http://www.e-hrit.com
 

Contact Me
Chat
aek.samroeng ysam...@hotmail.com
Signature powered by WiseStamp 

Test-1.xls

Santipong Nasui

unread,
Sep 15, 2011, 10:41:20 PM9/15/11
to excel_...@googlegroups.com
สวัสดีครับ

จากคำถาม 
2. ทดสอบเลือกคลิกปุ่ม Run Macro - Run /  มีลูกศร+แทบสีเหลืองขึ้นที่คำว่า Sub SetCode 1() 

ลองสังเกตว่าบรรทัดแรกสุดมีคำว่า Option Explicit อยู่หรือไม่ครับ หากมีให้ลบออกหรือทำให้เป็น Comment โดยเติมเครื่องหมาย ' เข้าไปข้างหน้า จะได้เป็น 'Option Explicit

คำสั่ง Option Explicit นี้จะเป็นตัวกำหนดว่าในการเขียน Code ต้องประกาศตัวแปรเสมอ หากไม่ประกาศตัวแปร เช่น Code ตามไฟล์แนบ ก็จะไม่สามารถ Run Code ได้ครับ

ตัวแปรคืออะไร?
ตัวแปรคือตัวเก็บข้อมูลชั่วคราวที่ใช้ในการ Run Code

ชนิดของตัวแปรมีอะไรบ้าง?
Byte, Boolean, Integer, Long, Single, Double, Decimal, Currency, Date, Object, String, Varaint, Userdefine

การประกาศตัวแปรกับไม่ประกาศตัวแปรต่างงกันอย่างไร?
การประกาศตัวแปรเป็นการจองหน่วยคำจำไว้ใช้ก่อนที่ Code จะทำงาน ซึ่งตัวแปรแต่ละชนิดใช้หน่วยความจำไม่เท่ากัน ดูได้จากที่นี่ครับ http://msdn.microsoft.com/en-us/library/aa263420(v=vs.60).aspx

กรณีไม่ประกาศตัวแปร จะทำให้ตัวแปรทั้งหลายที่ใช้ใน Code เป็นตัวแปรชนิดเดียวคือเป็น Variant ซึ่งใช้หน่วยความจำขนาด 16Bytes ซึ่งหากใช้ตัวแปรจำนวนมากโดยไม่ได้ประกาศตัวแปรก็จะไม่เป็นการจัดสรรทรัพยากรในการ Run Program อย่างเหมาะสม



คนควน (snasui)
MOS Specialist, MOS Expert, MVP Excel

        

      



Santipong Nasui

unread,
Sep 15, 2011, 10:54:15 PM9/15/11
to excel_...@googlegroups.com
อืม...ขออภัยครับ ผมสังเกตว่ามีการประกาศตัวแปรไว้แล้วครับคือส่วนนี้

Dim Sale As Single

แต่ผิดพลาดตรงบรรทัด

[c2] .Select

จะต้องแก้เป็น

[c2].Select

สังเกตว่า [c2] และ . จะต้องติดกันครับ

2011/9/16 Santipong Nasui <sna...@gmail.com>

Santipong Nasui

unread,
Sep 15, 2011, 11:00:39 PM9/15/11
to excel_...@googlegroups.com
 Code ยังมีผิดที่  IsEmpty(ActveCell.Value) 

ปรับใหม่ให้เป็นตามด้านล่างครับ

Sub SetCode1()

Dim Sale As Single
[c2].Select
Do While Not IsEmpty(ActiveCell.Value)
            Sale = ActiveCell.Value
            If Sale <= 5000 Then
                ActiveCell.Offset(0, 1).Value = "A"
            Else
                ActiveCell.Offset(0, 1).Value = "B"
            End If
            ActiveCell.Offset(1, 0).Select
Loop
End Sub
322.png

var...@th.nyklogistics.com

unread,
Sep 15, 2011, 11:23:53 PM9/15/11
to excel_...@googlegroups.com, excel_...@googlegroups.com

ถึงคุณสันติพงศ์

ขอขอบคุณนะครับ สำหรับคำแนะนำ / ผมจะลองไปแก้ไขดูก่อนและจะรายงานผลให้
ทราบทีหลังนะครับ


Best regards,
==========================
Warit  Karniti (Export Dept.)
Nyk Logistics (Thailand ) Co.,Ltd
T. 02-206-8377
F. 02-206-8161-2



Santipong Nasui <sna...@gmail.com>
Sent by: excel_...@googlegroups.com

16/09/2011 10:00

Please respond to
excel_...@googlegroups.com

To
excel_...@googlegroups.com
cc
Subject
Re: [Excel4HR::1869] ขอคำแนะนำเรื่อง ล้างข้อมูล / VBA (ไม่รู้ว่าเรียกถูกต้องหรือเปล่า )





 Code ยังมีผิดที่  IsEmpty(ActveCell.Value) 

ปรับใหม่ให้เป็นตามด้านล่างครับ

Sub SetCode1()

Dim Sale As Single
[c2].Select
Do While Not IsEmpty(ActiveCell.Value)
            Sale = ActiveCell.Value
            If Sale <= 5000 Then
                ActiveCell.Offset(0, 1).Value = "A"
            Else
                ActiveCell.Offset(0, 1).Value = "B"
            End If
            ActiveCell.Offset(1, 0).Select
Loop
End Sub

คนควน (snasui)

MOS Specialist, MOS Expert, MVP Excel
http://snasui.blogspot.com/
http://snasui.bloggang.com/
http://www.snasui.com/


        

      



2011/9/16 Santipong Nasui <sna...@gmail.com>
อืม...ขออภัยครับ ผมสังเกตว่ามีการประกาศตัวแปรไว้แล้วครับคือส่วนนี้

Dim Sale As Single

แต่ผิดพลาดตรงบรรทัด

[c2] .Select

จะต้องแก้เป็น

[c2].Select

สังเกตว่า [c2] และ . จะต้องติดกันครับ





คนควน (snasui)
2011/9/16 Santipong Nasui <sna...@gmail.com>
สวัสดีครับ

จากคำถาม 
2. ทดสอบเลือกคลิกปุ่ม Run Macro - Run /  มีลูกศร+แทบสีเหลืองขึ้นที่คำว่า Sub SetCode 1() 

ลองสังเกตว่าบรรทัดแรกสุดมีคำว่า Option Explicit อยู่หรือไม่ครับ หากมีให้ลบออกหรือทำให้เป็น Comment โดยเติมเครื่องหมาย ' เข้าไปข้างหน้า จะได้เป็น 'Option Explicit

คำสั่ง Option Explicit นี้จะเป็นตัวกำหนดว่าในการเขียน Code ต้องประกาศตัวแปรเสมอ หากไม่ประกาศตัวแปร เช่น Code ตามไฟล์แนบ ก็จะไม่สามารถ Run Code ได้ครับ

ตัวแปรคืออะไร?
ตัวแปรคือตัวเก็บข้อมูลชั่วคราวที่ใช้ในการ Run Code

ชนิดของตัวแปรมีอะไรบ้าง?
Byte, Boolean, Integer, Long, Single, Double, Decimal, Currency, Date, Object, String, Varaint, Userdefine

การประกาศตัวแปรกับไม่ประกาศตัวแปรต่างงกันอย่างไร?
การประกาศตัวแปรเป็นการจองหน่วยคำจำไว้ใช้ก่อนที่ Code จะทำงาน ซึ่งตัวแปรแต่ละชนิดใช้หน่วยความจำไม่เท่ากัน ดูได้จากที่นี่ครับ http://msdn.microsoft.com/en-us/library/aa263420(v=vs.60).aspx

กรณีไม่ประกาศตัวแปร จะทำให้ตัวแปรทั้งหลายที่ใช้ใน Code เป็นตัวแปรชนิดเดียวคือเป็น Variant ซึ่งใช้หน่วยความจำขนาด 16Bytes ซึ่งหากใช้ตัวแปรจำนวนมากโดยไม่ได้ประกาศตัวแปรก็จะไม่เป็นการจัดสรรทรัพยากรในการ Run Program อย่างเหมาะสม



คนควน (snasui)

var...@th.nyklogistics.com

unread,
Sep 16, 2011, 5:49:20 AM9/16/11
to excel_...@googlegroups.com, excel_...@googlegroups.com

ถึงสันติพงษ์

ผมได้ลองทำตามคำแนะนำของคุณแล้ว 3 จุด
1. ผมเลือกวิธีลบคำ Option Explicit ออก
2. ไม่เว้นวรรคตรง [c2].Select
3. แก้ไขตรงคำว่า IsEmpty(ActiveCell.Value)

แต่ยังไม่ประสบความสำเร็จเลยครับ  " งง + โง่ " มากเลยครับตอนนี้ ผมได้แนบfile ชุดแก้ไขมาให้ลอง
ดูอีกครั้งครับ


Best regards,
==========================
Warit  Karniti (Export Dept.)
Nyk Logistics (Thailand ) Co.,Ltd
T. 02-206-8377
F. 02-206-8161-2



Santipong Nasui <sna...@gmail.com>
Sent by: excel_...@googlegroups.com

16/09/2011 10:00

Please respond to
excel_...@googlegroups.com

To
excel_...@googlegroups.com
cc
Subject
Re: [Excel4HR::1869] ขอคำแนะนำเรื่อง ล้างข้อมูล / VBA (ไม่รู้ว่าเรียกถูกต้องหรือเปล่า )





 Code ยังมีผิดที่  IsEmpty(ActveCell.Value) 

ปรับใหม่ให้เป็นตามด้านล่างครับ

Sub SetCode1()

Dim Sale As Single
[c2].Select
Do While Not IsEmpty(ActiveCell.Value)
            Sale = ActiveCell.Value
            If Sale <= 5000 Then
                ActiveCell.Offset(0, 1).Value = "A"
            Else
                ActiveCell.Offset(0, 1).Value = "B"
            End If
            ActiveCell.Offset(1, 0).Select
Loop
End Sub

คนควน (snasui)

MOS Specialist, MOS Expert, MVP Excel
http://snasui.blogspot.com/
http://snasui.bloggang.com/
http://www.snasui.com/


        


      



2011/9/16 Santipong Nasui <sna...@gmail.com>
อืม...ขออภัยครับ ผมสังเกตว่ามีการประกาศตัวแปรไว้แล้วครับคือส่วนนี้

Dim Sale As Single

แต่ผิดพลาดตรงบรรทัด

[c2] .Select

จะต้องแก้เป็น

[c2].Select

สังเกตว่า [c2] และ . จะต้องติดกันครับ





คนควน (snasui)
2011/9/16 Santipong Nasui <sna...@gmail.com>
สวัสดีครับ

จากคำถาม 
2. ทดสอบเลือกคลิกปุ่ม Run Macro - Run /  มีลูกศร+แทบสีเหลืองขึ้นที่คำว่า Sub SetCode 1() 

ลองสังเกตว่าบรรทัดแรกสุดมีคำว่า Option Explicit อยู่หรือไม่ครับ หากมีให้ลบออกหรือทำให้เป็น Comment โดยเติมเครื่องหมาย ' เข้าไปข้างหน้า จะได้เป็น 'Option Explicit

คำสั่ง Option Explicit นี้จะเป็นตัวกำหนดว่าในการเขียน Code ต้องประกาศตัวแปรเสมอ หากไม่ประกาศตัวแปร เช่น Code ตามไฟล์แนบ ก็จะไม่สามารถ Run Code ได้ครับ

ตัวแปรคืออะไร?
ตัวแปรคือตัวเก็บข้อมูลชั่วคราวที่ใช้ในการ Run Code

ชนิดของตัวแปรมีอะไรบ้าง?
Byte, Boolean, Integer, Long, Single, Double, Decimal, Currency, Date, Object, String, Varaint, Userdefine

การประกาศตัวแปรกับไม่ประกาศตัวแปรต่างงกันอย่างไร?
การประกาศตัวแปรเป็นการจองหน่วยคำจำไว้ใช้ก่อนที่ Code จะทำงาน ซึ่งตัวแปรแต่ละชนิดใช้หน่วยความจำไม่เท่ากัน ดูได้จากที่นี่ครับ http://msdn.microsoft.com/en-us/library/aa263420(v=vs.60).aspx

กรณีไม่ประกาศตัวแปร จะทำให้ตัวแปรทั้งหลายที่ใช้ใน Code เป็นตัวแปรชนิดเดียวคือเป็น Variant ซึ่งใช้หน่วยความจำขนาด 16Bytes ซึ่งหากใช้ตัวแปรจำนวนมากโดยไม่ได้ประกาศตัวแปรก็จะไม่เป็นการจัดสรรทรัพยากรในการ Run Program อย่างเหมาะสม



คนควน (snasui)
Test-1.xls

Santipong Nasui

unread,
Sep 16, 2011, 7:14:36 AM9/16/11
to excel_...@googlegroups.com
ไม่ทราบว่ายังติดปัญหาใดครับ หากคลิกที่ปุ่มแล้วไม่ทำงานก็ถือว่าเป็นปกติครับ เพราะว่าไม่ได้ Assign Macro ให้กับปุ่ม

ลองตามนี้ กดแป้น Alt+F8 เลือก SetCode1 > Run > สังเกตดูผล ลองเลือก ClearCode > Run สังเกตดูผล

หากต้องการ Assign Macro ให้กับปุ่ม ทำตามนี้ครับ (ไม่ต้องสนใจปุ่มเดิม)

1. เข้าเมนู View > Toolbars > Form
2. คลิก Button > นำมาวาดในตำแหน่งที่ต้องการ > โปรแกรมจะเปิดหน้าต่าง Assign Macro มาให้ > เลือกว่าจะ Assign Macro ใดให้กับปุ่ม > OK > ทำซ้ำกับ Macro ที่เหลือ
3. ทดสอบคลิกปุ่มที่ Assign Macro เรียบร้อยแล้ว



คนควน (snasui)
MOS Specialist, MOS Expert, MVP Excel

        

      



var...@th.nyklogistics.com

unread,
Sep 17, 2011, 12:35:34 AM9/17/11
to excel_...@googlegroups.com, excel_...@googlegroups.com

ถึงคุณสันติพงษ์

ตอนนี้สามารถ Run โปรแกรมได้แล้วครับตามคำแนะนำของคุณเลยครับ / ขอบคุณมากครับ

**********************************************************
ผมมีข้อสงสัยอยากจะขอคำแนะนำเพิ่มเติมครับ

1. ผมสงสัยว่า วิธีการสร้างปุ่มด้วย Command Button  กับ การสร้างปุ่ม Button มีผลต่อการ Run โปรแกรม
     หรือเปล่าครับ / และทั้ง 2 อย่างเหมาะ - ไม่เหมาะกับงานแบบไหนครับ ( จากตัวอย่าง File excle นี้ผมใช้การสร้างปุ่ม
     Command Button ครับ

2. ผมเพิ่งเริ่มศึกษา...และทำตามตัวอย่างหนังสือครับแต่ก็ไม่เข้าใจว่าการสร้างปุ่ม Command Button ว่ามีช่วงขั้นตอนไหนตกหล่น
     การทำ Assign Macro ให้กับปุ่ม /  เพราะว่าหนังสือทั้ง 2 เล่มที่อ่านก็แนะนำคล้ายกัน ( แต่ที่ผมสังเกตุจากหนังสือคือเขียนสำหรับ
     คนที่มีความรู้ความเข้าใน Macro + VBA มาพอสมควรครับ  / จึงอยากขอคำแนะนำวิธีการสร้างปุ่มที่มีขั้นตอนของการ Assing Macro
     ด้วยหรือเปล่าครับ

3. ผมมีข้อสงสัยว่าเราจะต้องเขียนสูตรใน VBE ให้เสร็จก่อนแล้วจึงจะสร้างปุ่มตาม / สร้างปุ่มก่อน + ปรับแต่งและเขียนสูตรใน VBE ตามวิธี
     ไหนเหมาะและได้ผลลัพธ์ได้ดีกว่ากันครับ


Best regards,
==========================
Warit  Karniti (Export Dept.)
Nyk Logistics (Thailand ) Co.,Ltd
T. 02-206-8377
F. 02-206-8161-2



Santipong Nasui <sna...@gmail.com>
Sent by: excel_...@googlegroups.com

16/09/2011 18:14

Please respond to
excel_...@googlegroups.com

To
excel_...@googlegroups.com
cc
Subject
Re: [Excel4HR::1874] ขอคำแนะนำเรื่อง ล้างข้อมูล / VBA (ไม่รู้ว่าเรียกถูกต้องหรือเปล่า )





ไม่ทราบว่ายังติดปัญหาใดครับ หากคลิกที่ปุ่มแล้วไม่ทำงานก็ถือว่าเป็นปกติครับ เพราะว่าไม่ได้ Assign Macro ให้กับปุ่ม

ลองตามนี้ กดแป้น Alt+F8 เลือก SetCode1 > Run > สังเกตดูผล ลองเลือก ClearCode > Run สังเกตดูผล

หากต้องการ Assign Macro ให้กับปุ่ม ทำตามนี้ครับ (ไม่ต้องสนใจปุ่มเดิม)

1. เข้าเมนู View > Toolbars > Form
2. คลิก Button > นำมาวาดในตำแหน่งที่ต้องการ > โปรแกรมจะเปิดหน้าต่าง Assign Macro มาให้ > เลือกว่าจะ Assign Macro ใดให้กับปุ่ม > OK > ทำซ้ำกับ Macro ที่เหลือ
3. ทดสอบคลิกปุ่มที่ Assign Macro เรียบร้อยแล้ว



คนควน (snasui)

Santipong Nasui

unread,
Sep 17, 2011, 2:24:37 AM9/17/11
to excel_...@googlegroups.com
จากคำถาม

1. ผมสงสัยว่า วิธีการสร้างปุ่มด้วย Command Button  กับ การสร้างปุ่ม Button มีผลต่อการ Run โปรแกรม 
     หรือเปล่าครับ / และทั้ง 2 อย่างเหมาะ - ไม่เหมาะกับงานแบบไหนครับ ( จากตัวอย่าง File excle นี้ผมใช้การสร้างปุ่ม 
     Command Button ครับ
2. ผมเพิ่งเริ่มศึกษา...และทำตามตัวอย่างหนังสือครับแต่ก็ไม่เข้าใจว่าการสร้างปุ่ม Command Button ว่ามีช่วงขั้นตอนไหนตกหล่น 
     การทำ Assign Macro ให้กับปุ่ม /  เพราะว่าหนังสือทั้ง 2 เล่มที่อ่านก็แนะนำคล้ายกัน ( แต่ที่ผมสังเกตุจากหนังสือคือเขียนสำหรับ 
     คนที่มีความรู้ความเข้าใน Macro + VBA มาพอสมควรครับ  / จึงอยากขอคำแนะนำวิธีการสร้างปุ่มที่มีขั้นตอนของการ Assing Macro 
     ด้วยหรือเปล่าครับ 

อธิบายคร่าว ๆ นะครับ Object ใน Excel มี 2 แบบคือ Forms Control และ ActiveX Control

สำหรับ Forms Control ไม่มี Event (เหตุการณ์ที่จะทำให้ Run Code เช่นคลิกเมาส์, ลากเมาส์ผ่าน, นำเมาส์มาชี้ ฯลฯ) ในตัวเอง ใช้ในการสร้าง Form ทั่ว ๆ ไปใน Worksheet สามารถติดต่อกับเซลล์ต่าง ๆ ใน Worksheet ได้ง่าย เราสามารถ Assign Macro ให้โดยวิธีที่ผมแนะนำไปแล้ว สามารถกำหนดคุณสมบัติ Object ชนิดนี้ได้อย่างจำกัดเช่นระบายสี ใส่รูป เติมกรอบ ไม่ได้

ส่วน ActiveX Control มี Event ในตัวเอง และมีอยู่สองที่ คือใน Worksheet และ VBE สามารถกำหนดคุณสมบัติได้หลากหลาย สามารถ Double click เพื่อเขียน Code หรือ คลิกขวาแล้วเลือก View Code เพื่อเขียน Code ได้ หากเน้นที่จะใช้ VBA ทาง Programmer ทั้งหลายจะเลือก Object ชนิดนี้มาใช้เพราะกำหนดค่าต่าง ๆ ให้เป็นตามต้องการได้

3. ผมมีข้อสงสัยว่าเราจะต้องเขียนสูตรใน VBE ให้เสร็จก่อนแล้วจึงจะสร้างปุ่มตาม / สร้างปุ่มก่อน + ปรับแต่งและเขียนสูตรใน VBE ตามวิธี 
     ไหนเหมาะและได้ผลลัพธ์ได้ดีกว่ากันครับ

สำหรับ Programmer มักจะเขียน Code ใน VBE จะมีการสร้าง Object ขึ้นมาก่อนคือ Form และ Control (Object ต่าง ๆ ) แล้วกำหนดการกระทำคือเขียน VBA ว่าเมื่อคลิกแล้วให้ดำเนินการใด ๆ แต่ทั้งนี้ทั้งนั้น การเขียน Code ทั้งหลายต้องวางแผนว่าจะทำอะไรขึ้นมาก่อนแล้วค่อยสร้าง Object ตามแผนนั้นแล้วค่อยเขียน Code กำหนดเงื่อนไขต่าง ๆ ตามต้องการ

ActiveX Control ใน Worksheet สามารถกำหนดค่าต่าง ๆ ได้ใกล้เคียงกับ Control ต่าง ๆ ใน VBE

แต่หากว่าเราใช้ฟังก์ชั่นต่าง ๆ ใน Excel เป็นหลัก แต่ต้องการนำ VBA มาช่วยในการทำงาน การเขียน Code ขึ้นมาก่อนแล้วค่อย Assing Macro ดูจะง่ายกว่า ส่วนผลลัพธ์จาก Code เดียวกัน ไม่ว่าจะสร้างปุ่มก่อนหรือเขียน Code ก่อนก็ตาม จะต้องเหมือนกันทุกประการครับ




คนควน (snasui)
MOS Specialist, MOS Expert, MVP Excel

        

      



Reply all
Reply to author
Forward
0 new messages