Page 1 of 1
สอบถาม Excel Marco เริ่มต้น
Posted: Mon Jun 08, 2015 12:33 pm
by Nat072
พอดีผมเพิ่งเริ่มหัดเรียนรู้ Excel VB ก็เลยลองเขียนแต่ก็ติดบ้างอย่าง ช่วงแก้ให้ด้วยครับ (ตัวอย่าง file)
Re: สอบถาม Excel Marco เริ่มต้น
Posted: Mon Jun 08, 2015 3:33 pm
by yodpao.b
Code: Select all
Sub Clear1()
Range("D5:E1000").ClearContents
End Sub
code Clear ใช้แบบนี้ดีกว่าไหมครับ
ส่วนสี เขียวแดง น่าใช้การจัดรูปแบบแบบใช้ข้อแม้ครับ
ในส่วนการเลื่อน เคอร์เซอร์รบกวนอาจารย์ช่วยเขียน Code ด้วยครับ
ขอศึกษาด้วยคนครับ
Re: สอบถาม Excel Marco เริ่มต้น
Posted: Mon Jun 08, 2015 7:05 pm
by snasui
Nat072 wrote:พอดีผมเพิ่งเริ่มหัดเรียนรู้ Excel VB ก็เลยลองเขียนแต่ก็ติดบ้างอย่าง ช่วงแก้ให้ด้วยครับ (ตัวอย่าง file)

ติดอะไรก็ให้แจ้ง Code นั้นมาในฟอรัมเลย อ่านกฎข้อ 5 ด้านบนประกอบด้วยเพื่อจะได้แจ้งมาครบถ้วนตามนั้นครับ
Re: สอบถาม Excel Marco เริ่มต้น
Posted: Tue Jun 09, 2015 1:06 am
by Nat072
1. ปุ่ม Y, N กดแล้วให้เรียงจากซ้าย ไปขวา แล้วเลื่อนลงมาด้านล่าง ตามตัวอย่าง File
2. ปุ่ม undo ถ้าคีย์ผิด สามารถถอยกลับไปแก้ใหม่ได้
Sub Yes()
Range("d5", "f14").Value = "Y"
Range("d5", "f14").Interior.Color = vbGreen
End Sub
Sub No()
Range("d5", "f14").Value = "N"
Range("d5", "f14").Interior.Color = vbRed
End Sub
Sub Clear()
Range("d5:f1000").Clearcontents
End Sub
Sub Undo()
Range("d5", "f14").Undo
End Sub
Re: สอบถาม Excel Marco เริ่มต้น
Posted: Tue Jun 09, 2015 12:46 pm
by yodpao.b
เรียนอาจารย์ครับ สอบถามเกี่ยวกับการสั่งให้เคอร์เซอร์ ให้เลื่อนไปตำแหน่งที่ต้องการ
จากรูป
2.JPG
- เมื่อเคอร์เซอร์อยู่ในต่ำแหน่ง D7 ให้คลิกปุ่มสีเขียวด้านล่าง
- ตัวอักษร Y จะปรากฎ และเคอร์เซอร์จะเลื่อนไปที่ตำแหน่ง E7 ผลที่ได้ถูกต้อง
คำถาม เมื่อเคอร์เซอร์จะเลื่อนไปที่ตำแหน่ง E7 ให้คลิกปุ่มสีเขียวด้านล่าง ตัวอักษร Y จะปรากฎ และเคอร์เซอร์จะเลื่อนไปที่ตำแหน่ง D8
จะแก้ไขโคดว่าอะไรดีครับ
code เดิม
Code: Select all
Sub MacroYES()
ActiveCell.FormulaR1C1 = "Y"
ActiveCell.Offset(0, 1).Select
End Sub
แนบไฟล์
Re: สอบถาม Excel Marco เริ่มต้น
Posted: Tue Jun 09, 2015 2:31 pm
by snasui

การเลื่อนเซลล์และการ Clear Contents ปรับ Code ตามด้านล่างครับ
Code: Select all
Sub Yes()
ActiveCell.Value = "Y"
If ActiveCell.Column = 4 Then
ActiveCell.Offset(0, 1).Select
ElseIf ActiveCell.Column = 5 Then
ActiveCell.Offset(1, -1).Select
End If
End Sub
Sub No()
ActiveCell.Value = "N"
If ActiveCell.Column = 4 Then
ActiveCell.Offset(0, 1).Select
ElseIf ActiveCell.Column = 5 Then
ActiveCell.Offset(1, -1).Select
End If
End Sub
Sub Clear()
Range("d5:e14").ClearContents
End Sub
สำหรับการจัดตรงกลางและการระบายสี ให้ลองบันทึก Macro แล้วปรับปรุง Code ดูก่อน ติดตรงไหนค่อยมาถามกันต่อ หากผ่านทุกข้อแล้วค่อยมาเขียน Undo ครับ
Re: สอบถาม Excel Marco เริ่มต้น
Posted: Tue Jun 09, 2015 5:32 pm
by yodpao.b
เข้าใจแล้วครับ
"ActiveCell.Column = 4 " หมายถึง แถว D นั้นเอง
ขอบคุณครับ เดียวลอง เขียนโคด undo ครับ
Re: สอบถาม Excel Marco เริ่มต้น
Posted: Tue Jun 09, 2015 6:22 pm
by yodpao.b
เรียนอาจารย์ครับ undo หมายถึงการย้อนคำสั่งกลับไปที่ละสเตป
การเขียน undo ใน VBA
ผมได้ลอง บันทึก Macro แล้ว ไม่พบโคด undo ครับ และหลังจากเราใช้คำสั่งใน VBA แล้วก็ไม่สามารถใช้ undo ใน excel ได้
ผมจึงลองแปลง โคดที่อาจารย์ให้มาย้อนกลับไปที่ละสเตป " ซึ่งนั้นไม่ใช่ความหมายของคำว่า undo
โคด
Code: Select all
Sub MacroUnDo()
If ActiveCell.Column = 4 Then
ActiveCell.Offset(-1, 1).Select
ElseIf ActiveCell.Column = 5 Then
ActiveCell.Offset(0, -1).Select
End If
Selection.ClearContents
End Sub
คำถาม
ผมเข้าใจว่า ใน VBA ไม่สามารถเขียนโคด undo ถูกต้องไหมครับ
ถ้าเขียนได้อาจารย์ช่วยกรุณาลองเขียนให้ด้วยครับ
Re: สอบถาม Excel Marco เริ่มต้น
Posted: Tue Jun 09, 2015 6:39 pm
by snasui

จาก Code ที่เขียนมาสามารถปรับเป็นด้านล่างครับ
Code: Select all
Sub MacroUnDo()
If ActiveCell.Row < 4 Then Exit Sub
If ActiveCell.Column = 4 Then
ActiveCell.ClearContents
ActiveCell.Offset(-1, 1).Select
ElseIf ActiveCell.Column = 5 Then
ActiveCell.ClearContents
ActiveCell.Offset(0, -1).Select
End If
End Sub
Re: สอบถาม Excel Marco เริ่มต้น
Posted: Tue Jun 09, 2015 6:49 pm
by snasui

คุณ yodpao.b ช่วยสรุปและตอบคำถามเจ้าของกระทู้ให้ครบทุกข้อตามที่ถามมาด้วย เนื่องจากได้ใช้กระทู้ถามในส่วนของตัวเองไปเป็นส่วนใหญ่ อาจจะออกนอกประเด็นที่เจ้าของกระทู้ตั้งใจไว้แต่เดิมครับ
Re: สอบถาม Excel Marco เริ่มต้น
Posted: Tue Jun 09, 2015 7:21 pm
by yodpao.b
ครับผมไฟล์ที่แนบครั้งล่าสุดน่าจะใช้เป็นคำตอบได้

(ขอโทษเจ้าของกระทู้นะครับเล่นซะเป็นกระทู้ตัวเองเลย)
Re: สอบถาม Excel Marco เริ่มต้น
Posted: Tue Jun 09, 2015 8:51 pm
by Nat072
ส่วนตัวต้องขอขอบคุณ yodpao.b ที่ถามคำถามแทน ได้ความรู้เพิ่มเติมมาก
และเพิ่งเรียนรู้เริ่มต้นก็ยังงง. คงต้องไปศึกษาเพิ่มเติม
ขอบคุณอาจารย์ snasui ที่ค่อยชี้แนะ.