เพื่อมุ่งให้เกิดคุณภาพจากการอบรมสูงสุด Excel Expert Training ให้การอบรม Excel กลุ่มเล็กๆ ไม่เกิน 6 คนทุกคนสามารถเรียนรู้ Excel อย่างใกล้ชิด จะมาคนเดียวหรือมาเป็นกลุ่มแล้วนัดวันอบรมแบบส่วนตัวก็ได้ ผู้เข้าอบรมทุกคนสามารถติดตามเนื้อหาที่อบรมได้อย่างชัดเจนจากจอภาพด้านหน้าของตัวเอง
Results 1 to 6 of 6

Thread: Macro Run บน Office 2003 กับ Office 2007

  1. #1
    Mixhi5
    Guest

    Macro Run บน Office 2003 กับ Office 2007

    ขอสอบการ Rum Macro บน Office 2003 กับ 2007 ครับ
    คือ...เครื่องคอมพิวเตอร์บ้านผมใช้ Office 2003 และผมได้สร้างไฟล์นึงขึ้นมาโดยใช้ Code Macro (ด้านล่าง) ซึ่งให้งานที่บ้านก็ใช้ได้ปกติ แต่พอนำมาใช้ที่ Office ไม่สามารถใช้งานได้ พอเรียกดู Code Macro ในไฟล์ปรากฏว่าหายไปหมดเลย ผมจึงเขียน Code ใหม่พอกด Save ระบบเตือนตามรูปที่แนบมาตอบตอบ Yes ก็ใช้งานได้เหมือนอยู่ที่บ้าน แต่พอกดปิดโปรแกรมไป แล้วเปิดใหม่ Code Macro ก็หาไปหมดอีก ปัญหาแบบนี้ต้องแก้ไขอย่างไรครับ
    ขอบคุณครับ

    --Code--
    Sub Clear()
    Range("K8").Select
    Selection.ClearContents
    Range("AE8").Select
    Selection.ClearContents
    Range("G9").Select
    Selection.ClearContents
    Range("J9").Select
    Selection.ClearContents
    Range("AE9").Select
    Selection.ClearContents
    Range("G10").Select
    Selection.ClearContents
    Range("G11").Select
    Selection.ClearContents
    Range("AE11").Select
    Selection.ClearContents
    Range("G12").Select
    Selection.ClearContents
    Range("T12").Select
    Selection.ClearContents
    Range("G13").Select
    Selection.ClearContents
    Range("O14").Select
    Selection.ClearContents
    Range("U14").Select
    Selection.ClearContents

    End Sub
    Sub Save()
    Lastline = Sheets("Data").Range("b65536").End(xlUp).Row + 1
    Sheets("Data").Cells(Lastline, 1) = Range("AC47").Value2
    Sheets("Data").Cells(Lastline, 2) = Range("BC63").Value
    Sheets("Data").Cells(Lastline, 3) = Range("G9").Value
    Sheets("Data").Cells(Lastline, 4) = Range("J9").Value
    Sheets("Data").Cells(Lastline, 5) = Range("AE9").Value
    Sheets("Data").Cells(Lastline, 6) = Range("W9").Value
    Sheets("Data").Cells(Lastline, 7) = Range("AE11").Value
    Sheets("Data").Cells(Lastline, 8) = Range("G10").Value
    Sheets("Data").Cells(Lastline, 9) = Range("G12").Value
    Sheets("Data").Cells(Lastline, 10) = Range("T12").Value
    Sheets("Data").Cells(Lastline, 11) = Range("AE8").Value
    Sheets("Data").Cells(Lastline, 12) = Range("E45").Value
    Sheets("Data").Cells(Lastline, 13) = Range("AC45").Value
    Sheets("Data").Cells(Lastline, 14) = Range("G11").Value
    Sheets("Data").Cells(Lastline, 15) = Range("T11").Value
    Sheets("Data").Cells(Lastline, 16) = Range("G13").Value
    Sheets("Data").Cells(Lastline, 17) = Range("G14").Value
    Sheets("Data").Cells(Lastline, 18) = Range("O14").Value
    Sheets("Data").Cells(Lastline, 19) = Range("U14").Value
    Sheets("Data").Cells(Lastline, 20) = Range("AE13").Value
    Sheets("Data").Cells(Lastline, 21) = Range("AE14").Value
    ActiveWorkbook.Save
    End Sub
    Sub PrintPolicy()
    Sheets("Application").Select
    ActiveWindow.SelectedSheets.PrintPreview
    Sheets("Application").Select
    End Sub

  2. #2
    pichartyapan
    Guest
    ต้องเลือกการ save แบบ save as .xlsm ครับ

  3. #3
    Mixhi5
    Guest

    ชื่อไฟล์เป็นนามสกุล .xlsm อยู่ครับ

    ปัจุบันชื่อไฟล์เป็นนามสกุล .xlsm อยู่ครับ

  4. #4
    pichartyapan
    Guest
    Quote Originally Posted by Mixhi5 View Post
    ปัจุบันชื่อไฟล์เป็นนามสกุล .xlsm อยู่ครับ
    ยังไม่เคยเจอ case แต่ที่อ่านจาก error ที่แนบมา เหมือนว่ามันบอกว่ามีการ set security ไม่ให้ยอมรับ macro ที่ระดับ worksheets ลองรอท่านอื่นอีกทีนะครับ

  5. #5
    Mixhi5
    Guest
    ขอบคุณมากครับ
    ให้ IT มาลง Office 2007 ให้ใหม่ครับ

  6. #6
    rotcsaa
    Guest

    เสริมเรื่องการตั้งชื่อแมโครและการแก้ไขโค้ด

    เห็นคุณตั้งชื่อแมโครว่า Save กับ Clear แล้ว คุณอาจไม่สามารถทราบว่า Save และ Clear เป็น Method ซึ่งเป็น Reserve Word ที่ห้ามใช้ เพราะ Save เป็นเมธอดใช้กับ Workbook Object ส่วน Clear เป็นเมธอดใช้กับ Range

    ถ้าคุณเผลอตั้งชื่อแมโครด้วยเมธอด เวลาสั่งรันแมโครแล้วมีโค้ดที่ระบุว่า Workbooks(#).Save ตัวแมโครจะสับสนว่าให้ไปเรียกใช้แมโคร Save หรือสั่งบันทึกแฟ้มกันแน่

    แนะนำให้ตั้งชื่อแมโครว่า ClearData , RecordData จะดีกว่า

    สำหรับโค้ดแมโครที่คุณแสดงให้ดูนั้น เข้าใจว่าได้จากการบันทึกแมโคร ซึ่งตัวบันทึกแมโครจะสร้างโค้ดที่ไม่จำเป็นออกมา ส่งผลทำให้แมโครทำงานช้าเพราะต้องเสียเวลาประมวลผลบรรทัดรหัสท้ี่ไม่จำเป็น

    การแก้ไข

    อันดับแรก ให้คุณเข้าไปที่แมโครที่ต้องการโดยกด Alt+F8 เลือกแมโครที่ต้องการ
    เลือกแมโครแล้วคลิกปุ่ม Edit
    ย่อหน้าต่าง VBE
    กด F8 Key พร้อมกับการสังเกตการกระทำที่เกิดขึ้น

    คุณจะพบว่า Selection อ้างอิงถึงกลุ่มเซลล์ที่เลือกไว้ ดังนั้นให้ลบคำสั่ง Select และ Selection ออก ตัด ClearContents มาใส่อทน

    ถ้าเป็นดิฉันโค้ดของคุณแก้ไขเลือกเพียง 1 บรรทัดดังข้างล่าง

    Code:
    Sub ClearData()
    Range("K8, AE8,J9,AE9,G9:G13,AE11,T12,O14,U14").ClearContents
    End Sub
    ส่วนการสั่งแสดงภาพก่อนพิมพ์ใช้โค้ดนี้เลย

    Code:
     
    Sub PreviewSheet()
    Sheets("ชื่อเวิร์กชีต").PrintPreview
    End Sub

Similar Threads

  1. Replies: 1
    Last Post: 8 Sep 2010, 00:52
  2. Replies: 0
    Last Post: 16 Jun 2009, 15:55

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •