Page 1 of 1
ขอคำแนะนำเพิ่มเติมเรื่องการคลิกเลือกของ VBA
Posted: Sat Oct 29, 2011 12:33 pm
by warit
ถึงคุณสันติพง
ษ์ครับ
สวัสดีครับสบายดีหรือเปล่าครับ
อ้างถึงคำถามที่ผมเคยถามไปครับ / เรื่องการบันทึกข้อมูล + การเคลียร์ข้อมูล ตอนนี้ผมสามารถ
ทำได้แล้วครับ

และได้ส่งเอกสารตัวจริงมาให้ดู/แต่ส่งมาไม่ผ่านครับเพราะว่า Fille มีขนาดใหญ่ครับ เพราะว่ามันมีรูปอยู่ใน Sheet4 ครับ
และตอนนี้ผมลองแกะสูตรการคลิกเลือก จากโครงสร้าง Select...Case ของคุณสันติพง
ษ์ดูแล้วเครื่องกับไม่สามารถ Run ได้ครับกับแจ้งว่า ไม่เจอ Obj... จากการตั้ง Assign Mcaro
ครับ จึงอยากรบกวนให้คุณสันติพง
ษ์ช่วยดูโครงสร้างให้ด้วยครับว่าถูกหรือเปล่าครับ
ผมแนบเอกสารจากตัวอย่างเก่ามาแทนนะครับ
-----
งดถามถึงผมโดยตรง และหากเขียนชื่อผมควรเขียนให้ถูก ดูกระทู้นี้ประกอบครับ
viewtopic.php?f=3&t=1690
Re: ขอคำแนะนำเพิ่มเติมเรื่องการคลิกเลือกของ VBA
Posted: Sun Oct 30, 2011 6:47 am
by snasui

หากยังไม่ปรับปรุงผมยังไม่ตอบนะครับ

Re: ขอคำแนะนำเพิ่มเติมเรื่องการคลิกเลือกของ VBA
Posted: Mon Oct 31, 2011 11:10 am
by warit
ถึงคุณสันติพงศ์ และ พี่ๆ เพื่อนๆ สมาชิกทุกท่านครับ
ก่อนอื่นผมต้องขอโทษ ๆ คุณสันติพงศ์ ด้วยนะครับทีสะกดชื่อผิดมาตลอดโดยไม่ได้ดู Emil ให้ดีสะก่อน
ตั้งหลายครั้งเลยครับ
" สวัสดีครับ พี่ๆ เพื่อนๆ สมาชิกทุกท่านครับ " ผมวริษฐ์ สมาชิกใหม่ครับ / หากการ Post ของผม
ทำผิดกติกาในกลุ่มตรงจุดไหนแนะนำกลับมาได้นะครับยินดีรับฟ้งทุกๆเรื่องครับ
Re: ขอคำแนะนำเพิ่มเติมเรื่องการคลิกเลือกของ VBA
Posted: Mon Oct 31, 2011 12:53 pm
by snasui

ลองปรับ Code ที่ Module2 เป็นตามด้านล่างสังเกตว่า Code แทบจะเหมือนเดิมครับ
Code: Select all
Option Explicit
Dim obj As Object
Dim objg As Object
Sub SelectObj1(One As Object, Grp As Object)
With One
.Fill.ForeColor.SchemeColor = 10
.Fill.Visible = Not .Fill.Visible
End With
Grp.Fill.Visible = msoFalse
If One.Fill.Visible Then
Select Case One.Name
Case "Oval 15"
Range("C14:C16").ClearContents
Range("C14") = "IN"
Case "Oval 16"
Range("C14:C16").ClearContents
Range("C15") = "P"
Case "Oval 17"
Range("C14:C16").ClearContents
Range("C16") = "BL"
End Select
Else
Range("C14:C16").ClearContents
End If
End Sub
Sub ObjInvoice()
Set obj = ActiveSheet.Shapes("Oval 15")
Set objg = ActiveSheet.Shapes.Range(Array("Oval 16", "Oval 17"))
SelectObj1 obj, objg
End Sub
Sub ObjPacking()
Set obj = ActiveSheet.Shapes("Oval 16")
Set objg = ActiveSheet.Shapes.Range(Array("Oval 15", "Oval 17"))
SelectObj1 obj, objg
End Sub
Sub ObjBL()
Set obj = ActiveSheet.Shapes("Oval 17")
Set objg = ActiveSheet.Shapes.Range(Array("Oval 15", "Oval 16"))
SelectObj1 obj, objg
End Sub
Re: ขอคำแนะนำเพิ่มเติมเรื่องการคลิกเลือกของ VBA
Posted: Mon Oct 31, 2011 2:41 pm
by warit
ถึงคุณสันติพงศ์ครับ
ขอบคุณมากครับ / และผมจะนำไปปรับสูตรแล้วจะรายงานผลลัพธ์กลับนะครับ
Re: ขอคำแนะนำเพิ่มเติมเรื่องการคลิกเลือกของ VBA
Posted: Mon Oct 31, 2011 6:35 pm
by warit
ถึงคุณสันติพงศ์ / และสมาชิกทุกท่านครับ
ต้องขอโทษอีกครั้งนะครับ / ตอนนี้ผมได้ลองทำตามคำแนะนำของคุณสันติพงศ์แล้วครับ
และทดลอง Run โปรแกรมดูแล้วผลลัพธ์ของสูตรคือคลิกเลือกเพียง 1 ต่อ 1 รายการเท่านั้นครับ
เป็นเพราะว่า "ผมเองครับ" ที่อธิบายความต้องการของโครงสร้างผิดครับ / สิ่งที่ต้องการคือสามารถคลิกเลือกได้ทุกๆอัน ( เลือกได้มากกว่า 1 รายการ หรือทั้งหมด ) และสามารถแสดงผลลัพธ์ได้เป็นอิสระครับ
ผมได้แนบเอกสารตัวเก่ามาประกอบครับ / ส่วนสูตรผมถอดสูตรไว้ในเอกสารตัวจริงครับไม่สามารถส่งผ่านมาได้ / เพราะว่าเอกสารมีขนาดใหญ่มากเพราะมีรูปภาพอยู่ในเอกสารประมาณ 13 รูปครับ
Re: ขอคำแนะนำเพิ่มเติมเรื่องการคลิกเลือกของ VBA
Posted: Mon Oct 31, 2011 8:42 pm
by snasui

การใช้ VBA จำเป็นต้องอธิบายเยอะ ๆ ละเอียดเท่าไรยิ่งดี จากกรณีนี้สังเกตว่าเขียน Code อีกแบบนึงเลยครับ คราวต่อไปควรปรับมาก่อนนะครับ
สำหรับตัวอย่าง Code ตามด้านล่างครับ
Code: Select all
Sub ObjInvoice()
Set obj = ActiveSheet.Shapes("Oval 15")
With obj
.Fill.ForeColor.SchemeColor = 10
.Fill.Visible = Not .Fill.Visible
If .Fill.Visible Then
Range("C14") = "IN"
Else
Range("C14") = ""
End If
End With
End Sub
Sub ObjPacking()
Set obj = ActiveSheet.Shapes("Oval 16")
With obj
.Fill.ForeColor.SchemeColor = 10
.Fill.Visible = Not .Fill.Visible
If .Fill.Visible Then
Range("C15") = "P"
Else
Range("C15") = ""
End If
End With
End Sub
Sub ObjBL()
Set obj = ActiveSheet.Shapes("Oval 17")
With obj
.Fill.ForeColor.SchemeColor = 10
.Fill.Visible = Not .Fill.Visible
If .Fill.Visible Then
Range("C16") = "B/L"
Else
Range("C16") = ""
End If
End With
End Sub
Re: ขอคำแนะนำเพิ่มเติมเรื่องการคลิกเลือกของ VBA
Posted: Tue Nov 01, 2011 1:30 pm
by warit
ถึงคุณสันติพงศ์ / และสมาชิกทุกท่านครับ
ขอขอบคุณมากครับผมได้รับ Code จากคุณสันติพงษ์แล้วครับ / ผมจะนำไปปรับในเอกสารและจะ
รายงานผลลัพธ์ให้ทราบในภายหลังนะครับ
ขอบคุณมากครับสำหรับคำแนะนำทีดีกลับมากทุก ๆ ครั้งครับ
Re: ขอคำแนะนำเพิ่มเติมเรื่องการคลิกเลือกของ VBA
Posted: Thu Nov 03, 2011 11:26 am
by warit
ถึงสมาชิกทุกท่านครับ / อาจารย์สันติพงศ์ครับ
ผมขออนุญาตแชร์เอกสารที่ผมกำลังทำอยู่ เผื่อจะมีสมาชิกท่านใด จะนำไปประยุกต์ หรือปรับเปลี่ยนตามความต้องการนะครับ / เอกสารชุดนี้เป็นการสั่งทำ ORDER FORM CERT ต่างๆ โดยใช้ Code VBA ในการเลือกประเภท Form..., จัดเก็บข้อมูล , เคลียร์ข้อมูล , ลบข้อมูล และเลือกข้อมูล
( โดยได้รับคำแนะนำดี ๆ มาจาก "อาจารย์สันติพงศ์ มาตลอด )
และต้องให้เครดิตจากหนังสือ + เวปไซต์ที่ผมไปคัดลอก Code VBA มาใช้ประยุกต์ในเอกสารชุดนี้ด้วยครับ
ปล.เอกสารที่จัดทำอาจจะดูยังไม่สมบรูณ์ต้องขออภัยไว ณ ทีนี้ด้วยนะครับ / มือใหม่เพิ่งเริ่มเรียนครับ
