snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ
ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ VBA
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
suka
Silver
Posts: 918 Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021
#21
Post
by suka » Tue Sep 27, 2011 7:22 pm
ขอบคุณค่ะอาจารย์ จะค่อยๆ ลองศึกษา VBA ค่ะ ดูแล้วก็ยากจะเข้าใจนะคะ
ขอรบกวนอาจารย์อีกรอบค่ะ ขอช่วยตรวจว่าวาง Code ผิดที่หรือมีจุดใดผิด ยังใช้ไม่ได้น่ะค่ะ
ขอบคุณค่ะ
Attachments
บันทึกการจ่ายเช็ค.xls
(61.5 KiB) Downloaded 4 times
snasui
Site Admin
Posts: 31191 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#22
Post
by snasui » Tue Sep 27, 2011 8:05 pm
ไม่ทราบว่า Copy ไปวางโดยวิธีใดครับ Code ถึงกลายเป็นสีแดงไปได้
การ Copy Code ให้ทำตามภาพ ลองทดสอบดูอีกครั้งครับ เมื่อทำไปวางใน VBE แล้ว Code ต้องไม่กลายเป็นสีแดง
Attachments
CopyCode.png (37.79 KiB) Viewed 48 times
suka
Silver
Posts: 918 Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021
#23
Post
by suka » Tue Sep 27, 2011 8:15 pm
อาจารย์คะ
ตอน Copy Code ไปวางครั้งแรกไม่เป็นสีแดงค่ะ แต่พอเปลี่ยน ActiveShee เป็น Sheets("AY") เท่าแหละเป็นสีแดงเลยค่ะ
snasui
Site Admin
Posts: 31191 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#24
Post
by snasui » Tue Sep 27, 2011 8:19 pm
ถ้าเช่นนั้นลองใช้วิธีนี้ในการ Replace ครับ
ในโปรแกรม VBE
1. คลุม Code ที่นำไปวาง
2. กดแป้น Ctrl+H > ช่องบนคีย์ ActiveSheet ช่องล่างคีย์ Sheets("AY")
3. คลิกปุ่ม Replace All
สังเกตว่าเป็นสีแดงหรือไม่ครับ
suka
Silver
Posts: 918 Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021
#25
Post
by suka » Tue Sep 27, 2011 9:33 pm
อาจารย์คะ ลองทำแล้วไม่ได้ค่ะ
ได้แนบรูปมากับไฟล์ตัวอย่างไม่ทราบทำผิดจุดไหน รู้สึกเกรงใจอาจารย์จังค่ะ
ขอบคุณค่ะ
Attachments
บันทึกการจ่ายเช็ค.xls
(93.5 KiB) Downloaded 2 times
snasui
Site Admin
Posts: 31191 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#26
Post
by snasui » Tue Sep 27, 2011 9:55 pm
ลองพยายามใหม่ครับ ดู Code เดิมว่าเขียนอย่างไร ที่เขียนมานั้นบางค่าไม่ถูกต้อง ผิดกันไปเป็นคนละตัว บางค่ามี s เกินมา และสำหรับที่ล้อมกรอบสี่เหลี่ยมให้ลบค่าว่างทิ้งไปก่อนครับ ค่าจะขยับไปด้านหน้า หากต้องการจะให้เยื้องเหมือนเดิมก็ให้กดแป้น Tab หรือกด Space bar
Attachments
Code Error.png (17.71 KiB) Viewed 46 times
suka
Silver
Posts: 918 Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021
#27
Post
by suka » Wed Sep 28, 2011 12:51 pm
อาจารย์คะ มาขอรบกวนอีกรอบค่ะ
ได้ลองทำแล้วไม่เป็นสีแดงแต่เส้นคู่ก็ยังไม่เปลี่ยนแปลงค่ะ ยังไม่ได้เหมือนเดิมได้แนบตัวอย่างไฟล์มาให้อาจารย์ช่วยจับผิดให้ค่ะ
ขอบคุณมากๆค่ะ
Attachments
บันทึกการจ่ายเช็ค.xls
(61 KiB) Downloaded 2 times
snasui
Site Admin
Posts: 31191 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#28
Post
by snasui » Wed Sep 28, 2011 1:40 pm
เส้นคู่จะยังไม่เปลี่ยนแปลงจนกว่าจะมีการ Run Code ครับ วิธีการ Run Code ให้กดแป้น Alt+F8 > เลือก HideLine หรือไม่ก็สร้างปุ่มขึ้นมาเพื่อ Assign Macro แล้วคลิกปุ่มนี้เพื่อให้ Code ทำงาน
suka
Silver
Posts: 918 Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021
#29
Post
by suka » Wed Sep 28, 2011 5:14 pm
อาจารย์คะ สามารถทำปุ่ม HideLine ให้ทำงานได้แล้วค่ะ
ขอบพระคุณมากๆค่ะ
suka
Silver
Posts: 918 Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021
#30
Post
by suka » Wed Sep 28, 2011 10:27 pm
ที่คุณ Logic โพสต์นั้นถูกต้องแล้วครับ เมื่อมีการพิมพ์แล้วก็ต้องเก็บข้อมูลไว้เพื่อจะตรวจสอบได้ว่าพิมพ์แล้วหรือยังไมพิมพ์ การเก็บข้อมูลอัตโนมัติคงต้องพึ่ง VBA และเช่นเคยครับ ถ้าจะใช้ VBA ก็เขียนมาก่อน ติดตรงไหนก็มาถามกันต่อครับ
อาจารย์คะ มาขอรบกวนอีกแล้วค่ะ
ที่ชีท AY ได้ทำปุ่ม Print Area พร้อมลองใส่ Code เพื่อให้พิมพ์ได้แล้วค่ะ
หากจะขอให้อาจารย์ช่วยเพิ่ม Code เมื่อกดปุ่ม Print Area ให้ระบบพิมพ์พร้อมเก็บข้อมูลที่พิมพ์ไว้ในฐานข้อมูลด้วยจะได้ไหมคะ
ขอบตุณค่ะ
Attachments
บันทึกการจ่ายเช็ค.xls
(65.5 KiB) Downloaded 3 times
snasui
Site Admin
Posts: 31191 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#31
Post
by snasui » Wed Sep 28, 2011 10:47 pm
ต้องการพิมพ์พื้นที่ไหนถึงไหนครับ ได้ออกแบบฐานข้อมูลไว้ให้แล้วยัง ถ้าออกแบบไว้แล้วอยู่ที่ชีทใดช่วยแจ้งด้วยครับ
suka
Silver
Posts: 918 Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021
#32
Post
by suka » Thu Sep 29, 2011 2:23 pm
อาจารย์คะ สำหรับให้โปรแกรมรู้ว่าพิมพ์แล้วใช้ เซลล์ K2 ที่ชีท Database ค่ะ
และชีท Form สำหรับกรอกข้อมูลไปไว้ที่ชีท Database ค่ะ
ขอบคุณค่ะ
Attachments
บันทึกการจ่ายเช็ค.xls
(69 KiB) Downloaded 8 times
snasui
Site Admin
Posts: 31191 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#33
Post
by snasui » Thu Sep 29, 2011 6:25 pm
ลองดู Code ด้านล่างครับ
Code: Select all
Sub SetPrintAreaBeforePrint()
Dim lng As Long
Dim r As Range
Dim i As Integer
On Error Resume Next
lng = Rows.Count
Set r = Sheets("Sheet2").Range("B3")
With Sheets("Database")
i = Application.Match(r, .Range("B:B"), 0)
If .Range("K" & i) = "Y" Then
MsgBox "Your cheque alreay printed."
Exit Sub
End If
End With
Sheets("AY").Range("A1:M10").PrintOut
Sheets("Database").Range("K" & i) = "Y"
MsgBox "Finish."
End Sub
suka
Silver
Posts: 918 Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021
#34
Post
by suka » Thu Sep 29, 2011 9:22 pm
อาจารย์คะ Code สั่งพิมพ์และป้องกันการพิมพ์ซ้ำใช้งานได้แล้วค่ะ
มาขอรบกวนเพิ่มค่ะ
ที่ชีท Form ได้ใส่ Code ให้บันทึกไปที่ชีท Databaseได้แล้ว มาขออาจารย์ช่วยตรวจให้ด้วยค่ะ
อีกเรื่องหลังบันทึกเสร็จแล้ว จะเคลียร์ให้เป็นฟอร์มว่างทำไม่ได้ค่ะ ขออาจารย์ช่วยเพิ่ม Code ให้ค่ะ
ขอบคุณค่ะ
Attachments
บันทึกการจ่ายเช็ค.xls
(75 KiB) Downloaded 3 times
snasui
Site Admin
Posts: 31191 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#35
Post
by snasui » Thu Sep 29, 2011 9:28 pm
ดูตัวอย่างจาก Link เหล่านี้แล้วลองปรับปรุง Code มาดูครับ
Clear contents
suka
Silver
Posts: 918 Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021
#36
Post
by suka » Fri Sep 30, 2011 9:43 am
อาจารย์คะ สามารถทำเคลียร์ให้เป็นฟอร์มว่างได้แล้วค่ะ
ขอบพระคุณมากๆค่ะ
suka
Silver
Posts: 918 Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021
#37
Post
by suka » Fri Sep 30, 2011 5:39 pm
อาจารย์คะ
ที่ชีท Form ได้ Add Calendar มาไว้ที่เซลล์ C2 ใช้งานได้ แต่ Add Calendar มาที่เซลล์ M2 ของชีท Form อันหลังนี้
ไม่สามารถปรับ Code ให้ใช้งานได้ มาขอรบกวนอาจารย์ช่วยปรับ Code ให้น่ะค่ะ
ขอบคุณค่ะ
Attachments
บันทึกการจ่ายเช็ค.xls
(90 KiB) Downloaded 5 times
joo
Gold
Posts: 1213 Joined: Sat Apr 17, 2010 3:50 pm
#38
Post
by joo » Fri Sep 30, 2011 9:16 pm
ลองปรับโค๊ดเป็นแบบนี้ดูครับ
Code: Select all
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
If (Target.Address = "$C$2" Or _
Target.Address = "$M$2") Then
With ActiveSheet.Calendar1
.Visible = True
.Top = ActiveCell.Offset(0, 0).Top
.Left = ActiveCell.Offset(0, 1).Left
End With
Else
ActiveSheet.Calendar1.Visible = False
End If
Application.EnableEvents = True
End Sub
suka
Silver
Posts: 918 Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021
#39
Post
by suka » Fri Sep 30, 2011 10:33 pm
สามารถใช้งานได้แล้วค่ะ ขอบคุณค่ะคุณ joo
ดีใจค่ะได้รับความช่วยเหลือเอื้อเฟื้อ แบ่งปันความรู้ขอบคุณมากๆค่ะ
suka
Silver
Posts: 918 Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021
#40
Post
by suka » Thu Oct 06, 2011 5:38 pm
ขอรบกวนอีกรอบค่ะ หากต้องการ Add Calendar ไปใช้เพิ่มอีกชีท
สมมุติว่าใช้ที่ เซลล์ A2 และ เซลล์ B2 ของชีท Test ต้องปรับโค๊ดอย่างไรคะ
ขอบคุณค่ะ