Page 1 of 1

VBA ต้องการโชว์ ฟอร์ม เมื่อเกิด Debug

Posted: Wed Jan 01, 2020 1:36 pm
by 9010521
(คำถามอยู่บรรทัดสุดท้าย)
สถานการณ์ คือ ผมต้องโหลดไฟล์ Excel มาจากฐานข้อมูล แล้วไฟล์นั้น ในแต่ละวันจะมีจำนวน Sheet ไม่เท่ากัน (สูงสุด คือ 6 Sheet)

สิ่งที่ผมต้องการข้อที่ 1 คือ รวมไฟล์ทุก Sheet มาไว้หน้าที่ 1 จากนั้น copy ทั้งหมด (เพื่อส่งไปอีก workbook) ในส่วนนี้ ผมใช้ On Error GoTo HandleError: เพื่อว่า เมื่อเกิด debug จากการค้นหา sheet ไม่เจอ (เช่น วันที่มี 3 Sheet ก็หา Sheet 4 ไม่เจอ) ให้ข้ามไป Sheet แรก แล้ว Copy ซึ่งในส่วนนี้สำเร็จอย่างงดงาม

(ตัวอย่าง) สมมติว่ามี 3 sheet

Sub คัดลอกและวาง()
On Error GoTo HandleError:

'copy จากหน้า 2 มาหน้า 1
Windows("ไฟล์สมมติ.xls").Activate Sheets("Sheet2").Select Selection.Copy
Sheets("Sheet1").Select Range("B26").Select ActiveSheet.Paste

'copy จากหน้า 3 มาหน้า 1
Windows("ไฟล์สมมติ.xls").Activate Sheets("Sheet3").Select Selection.Copy
Sheets("Sheet1").Select Range("B36").Select ActiveSheet.Paste

'copy จากหน้า 4 มาหน้า 1
Windows("ไฟล์สมมติ.xls").Activate Sheets("Sheet4").Select Selection.Copy
Sheets("Sheet1").Select Range("B46").Select ActiveSheet.Paste

HandleError:
'copy ข้อมูลทั้งหมดที่เอามาแปะไว้หน้าแรก
Sheets("Sheet1").Rows("13:100").Select Application.CutCopyMode = False Selection.Copy

มันก็สำเร็จดี แต่ปัญหาคือ ในกรณีที่ ผู้ใช้ไม่ได้เปิด "ไฟล์สมมติ.xls" ขึ้นมา มันจะแจ้งเตือน Debug อีกครั้ง ซึ่งผมต้องการแจ้งให้ผู้ใช้ทราบว่า กำลังลืมเปิด "ไฟล์สมมติ.xls" อยู่

ผมได้ทดลองใช้ On Error GoTo ซ้ำอีกครั้งแล้วแต่มันไม่ได้ผล
อีกแนวคิดที่ผมพยายามทำคือ ใช้ if โดยที่พยายามเขียนตรรกะว่า ถ้า การเลือก sheet ล้มเหลว ให้แสดง ฟอร์ม แต่ถ้าไม่ล้มเหลวให้ทำงานต่อไป ซึ่งผมไม่รู้ว่าต้องเขียนตรรกะนี้อย่างไร
หรือท่านใดมีหนทางอื่นๆ ที่สามารถให้ผลลัพธ์ได้ในทำนองเดียวกันนี้ รบกวนด้วยนะครับ

Re: VBA ต้องการโชว์ ฟอร์ม เมื่อเกิด Debug

Posted: Wed Jan 01, 2020 8:59 pm
by snasui
:D กรุณาแนบไฟล์ตัวอย่างมาด้วยจะได้ช่วยกันทดสอบได้ครับ

การโพสต์ Code ควรโพสต์ให้แสดงเป็นข้อความแบบ Code จะได้สะดวกในการอ่านและการ Copy ไปทดสอบครับ

วิธีการคือครอบด้วย [code]...[/code] ดูตัวอย่างที่กฎการใช้บอร์ดข้อ 5 ด้านบนครับ

Re: VBA ต้องการโชว์ ฟอร์ม เมื่อเกิด Debug

Posted: Sat Jan 04, 2020 2:48 pm
by 9010521
ทำได้แล้วครับ ขอบคุณที่ให้ความสนใจ