:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser
🪷 คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ

ปกติสามารถเก็บ macro ใน personal ได้ แต่ถ้าโค้ดที่อยู่ใน sheet นี่ต้องทำอย่างไรให้อยุ่ที่เดียวกันครับ

Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:D :thup: :cp: :flw: :rz: :sg: :tt: :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :ard: :arl: :aru: :| :mrgreen: :geek: :ugeek:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: ปกติสามารถเก็บ macro ใน personal ได้ แต่ถ้าโค้ดที่อยู่ใน sheet นี่ต้องทำอย่างไรให้อยุ่ที่เดียวกันครับ

Re: ปกติสามารถเก็บ macro ใน personal ได้ แต่ถ้าโค้ดที่อยู่ใน sheet นี่ต้องทำอย่างไรให้อยุ่ที่เดียวกันครับ

#4

by snasui » Mon Sep 05, 2022 3:17 pm

:D ตัวอย่างการใช้ Change Event ส่งค่าไป Module ปกติครับ

ที่ Worksheet

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
    
    On Error Resume Next
    
    Application.EnableEvents = False
    
    Call Abcdef(r:=Target, sh:=Me)
    
    Application.EnableEvents = True

End Sub
ที่ Module ปกติ

Code: Select all

Sub Abcdef(r As Range, sh As Worksheet)
    If r.Address = sh.Range("AI_Model").Address Then sh.Range("AI_Model") = UCase(sh.Range("AI_Model"))

    If r.Address = sh.Range("AI_Name").Address Then
        Dim Vlu_tel As String
        Vlu_tel = [Vlookup_Inlist_Tel]
        sh.Range("G5").Value = Vlu_tel
    End If

End Sub
เมื่อเกิดการเปลี่ยนแปลงที่เซลล์ใด ๆ ก็จะส่งเซลล์นั้น ชีตนั้นไปทำงานที่ Module ปกติตามเงื่อนไขที่กำหนดครับ

Re: ปกติสามารถเก็บ macro ใน personal ได้ แต่ถ้าโค้ดที่อยู่ใน sheet นี่ต้องทำอย่างไรให้อยุ่ที่เดียวกันครับ

#3

by 10idlnw » Mon Sep 05, 2022 1:18 pm

คือไฟล์นี้เป็นไฟล์รับรถเข้าซ่อม แต่ละชีตประกอบด้วย
sheet1 ใบรับรถเข้าซ่อม
sheet2 ใบรถซ่อมเสร็จ
sheet3 ใบเสนอราคา
sheet4 ใบเสร็จรับเงิน
โดย code vba แต่ละชีต จะต้องใช้ Worksheet_Change เพื่อใช้ target.address ผมคิดว่าจึงจำเป็นต้องใส่ code ลงใน sheet มันถึงจะทำงานครับ เช่นโค้ดนี้เป็นต้น ยอมรับครับว่าตอนทำไฟล์รับข้อมูลนี้แต่แรกไม่มีความรู้พอ เลยทำแบบ รถมาซ่อม 1 ครั้ง ก็สร้างให้ไปเลยต่อ 1 ไฟล์ครับ ทุกอย่างในไฟล์นี้เลยเหมือนกันหมดทุกอย่าง ยกเว้นข้อมูลการซ่อมครับ เวลาจะแก้ไขโค้ด เลยต้องแก้ทุกไฟล์ เวลา user ใช้จะได้เหมือนกันหมดน่ะครับอาจารย์ เลยเกิดปัญหาขึ้นตามนี้ครับ

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next

Application.EnableEvents = False

If Target.Address = Range("AI_Model").Address Then Range("AI_Model") = UCase(Range("AI_Model"))

If Target.Address = Range("AI_Name").Address Then
        Dim Vlu_tel As String
        Vlu_tel = [Vlookup_Inlist_Tel]
        Range("G5").Value = Vlu_tel
End If

Application.EnableEvents = True

End Sub

Re: ปกติสามารถเก็บ macro ใน personal ได้ แต่ถ้าโค้ดที่อยู่ใน sheet นี่ต้องทำอย่างไรให้อยุ่ที่เดียวกันครับ

#2

by snasui » Mon Sep 05, 2022 12:32 pm

:D ถ้าจะตอบให้ตรงประเด็นก็ต้องอธิบายสิ่งที่ทำว่ามีเหตุจำเป็นใดที่ต้องเก็บ Macro ไว้ในแต่ละชีตครับ

แต่ละชีตทำงานอะไร งานนั้นสามารถเรียกใช้ Macro ที่ Module ได้หรือไม่ ฯลฯ

ปกติสามารถเก็บ macro ใน personal ได้ แต่ถ้าโค้ดที่อยู่ใน sheet นี่ต้องทำอย่างไรให้อยุ่ที่เดียวกันครับ

#1

by 10idlnw » Mon Sep 05, 2022 11:18 am

คือผมมีไฟล์อยู่ประมาณ 50 ไฟล์ (และจะสร้างเรื่อยๆ) แต่ละไฟล์มี 6 sheets แต่ละ sheet จะมี code vba
ในนั้นจำนวนหนึ่ง มี 1 module เหมือนกันทุกไฟล์ เพราะ code ในนั้นจะเหมือนกันเป๊ะทุกอย่างครับ
เวลาจะแก้ตอนนี้ผมต้องเปิดแก้ทีละตัว ซึ่งถ้าเฉพาะ module ผมพอเข้าใจได้ว่าสร้างใน personal.xslb ได้เลย
แต่ Code ที่อยู่ในแต่ละ sheet 6 sheets จะทำอย่างไรให้มันอยู่ที่เดียวกันครับ จะได้แก้ทีเดียวจบเลยครับ
Attachments
2022-09-05_10-08-06.jpg
2022-09-05_10-08-06.jpg (49.45 KiB) Viewed 33 times

Top