: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

VBA ต้องการแก้ไขสูตร(ของคนอื่น) เพราะข้อมูลเปลี่ยนตำแหน่ง

ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ VBA
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
User avatar
apasri
Member
Member
Posts: 10
Joined: Mon Jan 15, 2018 2:46 pm

VBA ต้องการแก้ไขสูตร(ของคนอื่น) เพราะข้อมูลเปลี่ยนตำแหน่ง

#1

Post by apasri »

เรียนอาจารย์ที่เคารพและเพื่อนสามาชิกทุกท่าน

ขอความช่วยเหลือเรื่องการแก้ไขสูตร VBA ค่ะ

ชีตแรก เป็นการป้อนข้อมูลแบบ drop down และมี ปุ่มคำสั่ง VBA สำหรับโอนย้ายข้อมูลไปชีตอื่นๆ (ชีดสีแดง)

โดยตอนแรกมีข้อมูลจำนวนมาก ต่อมาลดข้อมูลลง ซึ่งต้องการเปลี่ยนตำแหน่งช่องข้อมูลให้กระชับขึ้น (ตามตัวอย่างชีตสีเหลือง)

ปัญหาที่พบเมื่อลบช่องข้อมูลออก ทำให้คำสั่งVBA ทำงานไม่ได้

จึงขอความช่วยเหลือช่วยดูและแก้ไขสูตรให้ด้วยค่ะ

เนื่องจากเจ้าหน้าที่ที่เขียนสูตร VBA ไม่ได้ทำงานที่เดิมแล้ว

ขอขอบคุณมากค่ะ
Attachments
Book1_test reduce1.xlsm
(455.3 KiB) Downloaded 10 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: VBA ต้องการแก้ไขสูตร(ของคนอื่น) เพราะข้อมูลเปลี่ยนตำแหน่ง

#2

Post by snasui »

:D ไฟล์ที่แนบมาไม่มี Code VBA ครับ
User avatar
apasri
Member
Member
Posts: 10
Joined: Mon Jan 15, 2018 2:46 pm

Re: VBA ต้องการแก้ไขสูตร(ของคนอื่น) เพราะข้อมูลเปลี่ยนตำแหน่ง

#3

Post by apasri »

แก้ไขได้แล้วค่ะ แนบไฟล์มาให้ใหม่แล้วนะคะ ชื่อไฟล test44 ค่ะ
:D
Attachments
book_test44.xlsm
(336.22 KiB) Downloaded 17 times
User avatar
logic
Gold
Gold
Posts: 1511
Joined: Thu Mar 18, 2010 1:57 pm
Excel Ver: 365

Re: VBA ต้องการแก้ไขสูตร(ของคนอื่น) เพราะข้อมูลเปลี่ยนตำแหน่ง

#4

Post by logic »

ลองตัดข้อมูลมาบางส่วน พอเป็นตัวอย่างครับ
User avatar
apasri
Member
Member
Posts: 10
Joined: Mon Jan 15, 2018 2:46 pm

Re: VBA ต้องการแก้ไขสูตร(ของคนอื่น) เพราะข้อมูลเปลี่ยนตำแหน่ง

#5

Post by apasri »

จากตัวอย่าง คือ ข้อมูลจากการป้อนด้วยคำสั่งVBA ไปยังชีตและช่องต่างๆ ซึ่งตอนนี้ เราไม่สามารถจัดช่องให้กระชับได้ (ต้องการลบช่องสีเทาที่ไม่ใช้) เพราะการลบช่อง ทำให้ VBA ไม่ทำงาน ซึ่งน่าจะเป็นเพราะ สูตรVBA กำหนดไว้ แต่ไม้่มีใครแก้สูตรเป็น จึงขอรบกวนท่านผู้รู้ที่เววปนี้ค่ะ และ(ไม่ต้องการhide เนื่องจากมีการcopyข้อมูลไปใช้อีกค่ะ) /ขอบคุณล่วงหน้าค่ะ
Attachments
แก้ VBA ไม่เป็น2.png
แก้ VBA ไม่เป็น2.png (409.03 KiB) Viewed 154 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: VBA ต้องการแก้ไขสูตร(ของคนอื่น) เพราะข้อมูลเปลี่ยนตำแหน่ง

#6

Post by snasui »

apasri wrote: Mon Jun 11, 2018 9:08 am แก้ไขได้แล้วค่ะ แนบไฟล์มาให้ใหม่แล้วนะคะ ชื่อไฟล test44 ค่ะ
:D
:D ไฟล์นี้ก็ยังไม่มี Code ต้องแนบไฟล์ที่มี Code จึงจะแก้ Code ให้ได้ครับ
User avatar
apasri
Member
Member
Posts: 10
Joined: Mon Jan 15, 2018 2:46 pm

Re: VBA ต้องการแก้ไขสูตร(ของคนอื่น) เพราะข้อมูลเปลี่ยนตำแหน่ง

#7

Post by apasri »

ขออภัยอีกครั้งค่ะ รอบนี้ได้แน่ๆค่ะ :mrgreen:
Attachments
book_test55.xlsm
(496.38 KiB) Downloaded 19 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: VBA ต้องการแก้ไขสูตร(ของคนอื่น) เพราะข้อมูลเปลี่ยนตำแหน่ง

#8

Post by snasui »

:D Code ที่จะต้องแก้คือตามด้านล่างครับ

Code: Select all

Sub AutoShape1_Click()    'save input
Dim r As Double, rr As Integer, mc As String
Dim mo As String, pa As String, shift As String, sec As String
If Sheet1.Range("B5") <> "" Then
rr = 5
mo = ""
pa = ""
sec = ""
Do While Sheet1.Cells(rr, 1) <> ""
If Sheet1.Cells(rr, 2) <> "" And sec <> Sheet1.Cells(rr, 2) Then
    SH = check_pro(Sheet1.Cells(rr, 2))
    sec = Sheet1.Cells(rr, 2)
    r = check_row(3)
End If
'=======================================================
    Sheets(SH).Cells(r, 1) = Sheet1.Range("C1")
    Sheets(SH).Cells(r, 2) = Sheet1.Range("D1")
    Sheets(SH).Cells(r, 3) = Sheet1.Range("E1")
    '=================================
    If Sheet1.Cells(rr, 3) <> "" Then
        mo = Sheet1.Cells(rr, 4)
        pa = Sheet1.Cells(rr, 3)
        'mc = Sheet1.Cells(rr, 9)
        'shift = Sheet1.Cells(rr, 7)
    End If
    Sheets(SH).Cells(r, 4) = Sheet1.Cells(rr, 7)  'shift
    Sheets(SH).Cells(r, 5) = mo  ' model
    Sheets(SH).Cells(r, 6) = pa  ' part name
    Sheets(SH).Cells(r, 7) = Sheet1.Cells(rr, 12)  'input
    Sheets(SH).Cells(r, 17) = Sheet1.Cells(rr, 17)  'output
    Sheets(SH).Cells(r, 9) = Sheet1.Cells(rr, 14)   'ng
    Sheets(SH).Cells(r, 10) = Sheet1.Cells(rr, 15)  'ng code
    Sheets(SH).Cells(r, 11) = Sheet1.Cells(rr, 16)  'ng name
    Sheets(SH).Cells(r, 12) = Sheet1.Cells(rr, 17)  'ng amount
    Sheets(SH).Cells(r, 14) = Sheet1.Cells(rr, 8)   'part no.
    Sheets(SH).Cells(r, 15) = Sheet1.Cells(rr, 11)  'inventory
    'Sheets(SH).Cells(r, 16) = Sheet1.Cells(rr, 9)   'MC
    Sheets(SH).Cells(r, 9) = Sheet1.Cells(rr, 9)
    If SH = "DLC" Then
        Sheets(SH).Cells(r, 18) = Sheet1.Cells(rr, 10)   'Opt
    Else
        Sheets(SH).Cells(r, 17) = Sheet1.Cells(rr, 10)   'Opt
    End If
    If SH = "DLC" Then Sheets(SH).Cells(r, 19) = Sheet1.Range("L1")  ' Type
    Sheets(SH).Cells(r, 13) = sec
    r = r + 1
    rr = rr + 1
Loop
End If
'=======================================================
    Sheet1.Range("B5:K1000") = ""
    Sheet1.Range("M5:O1000") = ""
    Sheet1.Range("Q5:Q1000") = ""

End Sub
Sheets(HS) คือชีต Output
Sheets(SH).Cells(r, 4) คือชีต Output เซลล์ในบรรทัดที่เป็นค่าของตัวแปร r คอลัมน์ ที่ 4 หากตัวแปร r คือ 10 หมายถึง บรรทัดที่ 10 คอลัมน์ที่ 4

หากไม่ต้องการใช้ Code ในบรรทัดใดให้ใส่เครื่องหมาย ' นำหน้า Code บรรทัดนั้น
หากต้องการเปลี่ยนค่าคอลัมน์ให้ตรงกับค่าที่ส่งมาจากข้อมูลต้นทางคือชีต 22 ให้เปลี่ยนที่เลขคอลัมน์ใน Code ลองทบทวนสิ่งที่ผมแปลไปให้ตามด้านบนแล้วปรับปรุง Code ดู ติดตรงไหนค่อยนำมาถามกันต่อ

การใช้ Code จะต้องปรับปรุงเองได้บ้าง หากทำเองไม่ได้เลยกรุณาหาคนที่พอทำได้มาถามกันครับ
User avatar
apasri
Member
Member
Posts: 10
Joined: Mon Jan 15, 2018 2:46 pm

Re: VBA ต้องการแก้ไขสูตร(ของคนอื่น) เพราะข้อมูลเปลี่ยนตำแหน่ง

#9

Post by apasri »

:thup:
ทำตามที่อาจรย์แนะนำ ตอนนี้แก้ไขทั้ง 2 ชีตได้ตามต้องการ และลบชีตที่ไม่ต้องการออกไปด้วยแล้วค่ะ
ขอบคุณอาจารย์ snasui (คนควน) มากค่ะ
:cp:
Post Reply