Page 1 of 1
Application.ScreenUpdating VBA
Posted: Thu Apr 06, 2023 8:24 am
by Jirawat namrach
สอบถามหน่อยครับ ทำยังไงให้ ScreenUpdating ทำงานครับ ส่วนอื่นใช้งานได้ปกติ ยกเว้น ScreenUpdating ที่ยังกระพริบอยู่ ไฟล์อื่นที่ทำมาไม่มีปัญหา ไฟล์นี้มีปัญหาครับ หรือมี Code ส่วนไหนที่ต้องแก้ไข รบกวนแนะนำด้วยครับ
Re: Application.ScreenUpdating VBA
Posted: Thu Apr 06, 2023 11:41 am
by snasui

ตามการจัดเรียง Code ถือว่าใช้งานได้แล้วครับ
สามารถ Debug Code ไปทีละบรรทัดโดยคลิกลงใน Code และกดแป้น F8 ซ้ำ ๆ การตรวจสอบว่าการปิดการ Update ได้ผลแล้วหรือไม่ ทำได้โดยเมื่อผ่านบรรทัดที่เขียนให้ปิดการ Refresh หน้าจอแล้ว ให้ตรวจสอบโดยการเปิดหน้าต่าง Immediate Window โดย Ctrl+G จากนั้นคีย์ Statement
?application.screenupdating
หากได้ผลเป็น True แสดงว่าถูกปิดการ Refresh หน้าจอเรียบร้อยแล้ว การที่ยังวูบวาบก็คงต้องยอมรับตามนั้น
หรือไม่ก็ต้องเขียน Code กำหนด Format และ Value ตรง ๆ
Code: Select all
'Other code
'.Range("f" & i).Copy
'sbook.Sheets(sbook.Sheets.Count).Range("B" & l).PasteSpecial xlPasteValuesAndNumberFormats
sbook.Sheets(sbook.Sheets.Count).Range("b" & l).Value = .Range("f" & i).Value
sbook.Sheets(sbook.Sheets.Count).Range("b" & l).NumberFormat = .Range("f" & i).NumberFormat
'.Range("G" & i, "L" & i).Copy
'sbook.Sheets(sbook.Sheets.Count).Range("D" & l).PasteSpecial xlPasteValuesAndNumberFormats
sbook.Sheets(sbook.Sheets.Count).Range("D" & l).Resize(, 6).Value = Range("G" & i, "L" & i).Value
sbook.Sheets(sbook.Sheets.Count).Range("D" & l).Resize(, 6).NumberFormat = Range("G" & i, "L" & i).NumberFormat
'Other code
เลข 6 ตรง Resize หมายถึงความกว้าง 6 คอลัมน์ การนำไปปรับใช้ก็จะต้องดู้ให้สัมพันธ์กับต้นทางว่ามีกี่คอลัมน์ครับ
Re: Application.ScreenUpdating VBA
Posted: Thu Apr 06, 2023 2:36 pm
by Jirawat namrach
ขอบคุณครับอาจารย์