Page 1 of 1
การเขียน VBA ทั่วไป
Posted: Wed Sep 21, 2011 3:12 pm
by yodpao.b
ขออนุญาติขึ้นหัวข้อใหม่ หมวดนี้ไว้ถามเรื่องทั่วไป
Re: การเขียน VBA ทั่วไป
Posted: Wed Sep 21, 2011 3:17 pm
by yodpao.b
Code: Select all
MsgBox "เพิ่มข้อมูลเรียบร้อยแล้ว", vbExclamation, "ฐานข้อมูลบุคคล"
จากโคด้ด้านบน 1.ถ้าเราต้องการให้ Textbox มาต่อท้าย "เพิ่มข้อมูลเรียบร้อยแล้ว" ต้องเขียนอย่างไร
2.ถ้าเราต้องการให้ ข้อความใน excle มาต่อท้าย "เพิ่มข้อมูลเรียบร้อยแล้ว" ต้องเขียนอย่างไร
ที่ต้องการทำแบบนี้เพราะว่า ข้อความนั้นเปลี่ยนไปเรื่อย
Re: การเขียน VBA ทั่วไป
Posted: Wed Sep 21, 2011 3:27 pm
by snasui
yodpao.b wrote:Code: Select all
MsgBox "เพิ่มข้อมูลเรียบร้อยแล้ว", vbExclamation, "ฐานข้อมูลบุคคล"
ปรับ Code เป็น
Code: Select all
MsgBox "เพิ่มข้อมูลเรียบร้อยแล้ว " & Range("A1"), vbExclamation, "ฐานข้อมูลบุคคล"
เมื่อ A1 เป็นข้อความใด ๆ ที่ต้องการนำมาแสดงใน MsgBox
Re: การเขียน VBA ทั่วไป
Posted: Thu Sep 22, 2011 8:22 am
by yodpao.b
และต้องบอกหน้าไหม ถ้าบอกต้องเขียนอย่างไร
Re: การเขียน VBA ทั่วไป
Posted: Thu Sep 22, 2011 9:25 am
by snasui
Re: การเขียน VBA ทั่วไป
Posted: Thu Sep 22, 2011 9:45 am
by yodpao.b
Range("A1") อยู่ Sheet1
Re: การเขียน VBA ทั่วไป
Posted: Thu Sep 22, 2011 9:55 am
by snasui

ช่วยเขียนให้เพื่อน ๆ เข้าใจด้วยครับ
ยกตัวอย่างการตั้งคำถามเช่น
หากต้องการการแสดงข้อความใน Sheet1 เซลล์ A1 มาต่อท้ายข้อความใน MsgBox จะต้องเขียน code อย่างไรครับ
อันนี้ผมเข้าใจว่าเพื่อน ๆ อ่านแล้วเข้าใจได้เลยไม่ต้องแปล ในกล่องข้อความเขียนได้ถึง 60,000 อักขระ ไม่ต้องกลัวว่าจะไม่พอที่จะอธิบายครับ
สำหรับคำถามนี้สามารถเขียน Code ได้ตามด้านล่างครับ
Code: Select all
MsgBox "เพิ่มข้อมูลเรียบร้อยแล้ว " & Sheets("Sheet1").Range("A1"), vbExclamation, "ฐานข้อมูลบุคคล"
Re: การเขียน VBA ทั่วไป
Posted: Fri Oct 21, 2011 12:25 pm
by yodpao.b
Code: Select all
Sub MacroRefresh()
Sheets("สรุปชั่วโมงล่วงเวลาประจำปี (1)").Select
Call UnprotectSheets
Sheets("สรุปชั่วโมงล่วงเวลาประจำปี (2)").Select
Call UnprotectSheets
Range("B10").Select
ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
Range("A2").Select
Sheets("สรุปชั่วโมงล่วงเวลาประจำปี (1)").Select
Call ProtectAllSheets
Sheets("สรุปชั่วโมงล่วงเวลาประจำปี (2)").Select
Call ProtectAllSheets
End Sub
จากโคดด้านบน
อาจาร์ยครับ ช่วยแก้โดคให้สั้นกว่านี้ได้ใหม่ครับ เช่นใช้ and
Re: การเขียน VBA ทั่วไป
Posted: Fri Oct 21, 2011 12:58 pm
by snasui

การทำงานกับชีทจำนวนมากไม่ควรที่จะทำไป Unprotect ไปแล้ว Protect กลับไปเรื่อย ๆ ลักษณะนี้ ควรจะ Loop เพื่อ Unprotect ทั้งหมดรวดเดียวและเมื่อทำงานเสร็จค่อย Loop เพื่อ Protect กลับเข้ามาใหม่
Code ที่ส่งมาถามก็ไม่ได้ยาวอะไรมากมาย ถ้าจะลบออกสามารถลบ Code ด้านล่างออกไปได้ครับ
Code: Select all
Range("B10").Select
Range("A2").Select
Re: การเขียน VBA ทั่วไป
Posted: Fri Oct 21, 2011 1:02 pm
by yodpao.b
ครับผม
Re: การเขียน VBA ทั่วไป
Posted: Fri Oct 21, 2011 5:13 pm
by yodpao.b
Untitled12.gif
เรียนถามอาจารย์ จากรูปด้านบน
ต้องการใส่ Password และจัดรูปแบบโดย ใช้รายงาน Pivot table
ผมได้ทดลองทำโดยใช้มาโครเขียนได้ code ดังด้านล่าง
Code: Select all
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowUsingPivotTables:=True
ผลที่ได้คือ เวลายกเลิกการป้องกันมันสั่งยกเลิกทันที โดยไม่ต้องใส่ Password
ผมได้ทดลองทำใหม่โดยใช้ Code ดังนี้
Code: Select all
ActiveSheet.Protect PassWord:="123"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowUsingPivotTables:=True
ผลที่ได้เหมือนเดิม คือ เวลายกเลิกการป้องกันมันสั่งยกเลิกทันที โดยไม่ต้องใส่ Password
คำถามต้องการให้ ใส่ Password และจัดรูปแบบโดย ใช้รายงาน Pivot table
รบกวนอาจารยช่วยแก้ไขให้ด้วยครับ
Re: การเขียน VBA ทั่วไป
Posted: Fri Oct 21, 2011 5:32 pm
by snasui

จาก Code
yodpao.b wrote:Code: Select all
ActiveSheet.Protect PassWord:="123"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowUsingPivotTables:=True
ลองปรับเป็นตามด้านล่างครับ
Code: Select all
ActiveSheet.Protect PassWord:="123", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowUsingPivotTables:=True
Re: การเขียน VBA ทั่วไป
Posted: Fri Oct 21, 2011 5:53 pm
by yodpao.b
ขอบคุณครับ