: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 : Add sheet, filter , filename

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Supachok
Gold
Gold
Posts: 1009
Joined: Wed Jun 18, 2014 11:11 am
Excel Ver: 2013

VBA : Add sheet, filter , filename

#1

Post by Supachok »

เรียน ท่านอาจารย์และผู้รู้
ปล : ไม่มีความเข้าใจในการเขียน VBA มากเท่าไร

ผมกำลังใช้ VBA เพื่อเขียนให้ Excel ทำงานในการแยก sheet และ filter จาก sheet master plan
-- Add sheet ทำได้ แต่มี error ใน sheet สุดท้ายทำให้มี sheet ที่ไม่ต้องการออกมาแต่แก้ ด้วย On Error Resume Next แทน

Worksheets("data base").Select
Range("e1").Select
Application.ScreenUpdating = False
Do Until IsEmpty(ActiveCell) And IsEmpty(ActiveCell.Offset(1, 0))
ActiveCell.Offset(1, 0).Select
Sheets.Add.Name = ActiveCell.Value
Loop


-- Filter ไม่สามารถเข้าใจ Marco code เพื่อนำไปประยุกต์ปรับแก้ไขได้ จึงเกิดปัญหา filename ในหัวข้อถัดไป
=FILTER('Master plan'!RC:R[38]C[13],'Master plan'!RC:R[38]C=RC[19])" <<< หากสามารถอธิบายหลักให้ผมเข้่าใจได้ R1C1 ช่วยแนะนำที่ครับจะนำไปปรับใช้

ActiveCell.Formula2R1C1 = _
"=FILTER('Master plan'!RC:R[38]C[13],'Master plan'!RC:R[38]C=RC[19])"


-- filename ใน Cell T1 หลังจาก run Code (add sheet) แล้วจะมี sheet สร้างใหม่ออกมา Sheet (Bank,chize,Jen)
Cell T1 =MID(CELL("filename"),FIND("]",CELL("filename"),1)+1,2222) >>> ผลลัพธ์คือทุก sheet ที่สร้างใหม่โดยการ run code ได้ชื่อเดียวกันหมด ทำให้ Criteria ที่ตั้งไว้ไม่ match ในการดึง filter มาแสดง

ActiveCell.Formula2R1C1 = _
"=MID(CELL(""filename""),FIND(""]"",CELL(""filename""),1)+1,2222)"


สิ่งที่ต้องให้ช่วยเหลือแนะนำ
1 .Add sheet Do until empty Cell อย่างไรไม่ให้เกิด error หรือเมื่อเจอ Empty cell แล้วหรือหยุดทำการสร้าง sheet ใหม่ แล้วออกจาก loop
2. Filter สามารถเขียนแบบ VBA ได้อย่างไร เพราะ Code copy จาก marco
3. filename ปกติเคยพบปัญหานี้ ไม่รู้จะแก้อย่างไรให้ Cell แสดงชื่อถูกต้องตาม sheet แต่ละ sheet.
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30769
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: VBA : Add sheet, filter , filename

#2

Post by snasui »

:D หากโพสต์แล้วไม่ต้องโพสต์ซ้ำ ที่โพสต์ไว้ผมลบไปแล้วครับ

ตัวอย่างการปรับ Code ตามด้านล่างครับ

Code: Select all

Sub Add_sheet()
'    On Error Resume Next
    Worksheets("data base").Select
    Range("e1").Select
    
    Application.ScreenUpdating = False
    Do While Not IsEmpty(ActiveCell.Offset(1, 0)) 'And IsEmpty(ActiveCell.Offset(1, 0))
        ActiveCell.Offset(1, 0).Select
        Sheets.Add.Name = ActiveCell.Value
        'create filename each sheet
          Range("T1").Select
        '    ActiveCell.Formula2R1C1 = _
                "=MID(CELL(""filename""),FIND(""]"",CELL(""filename""),1)+1,2222)"
            Range("T1").Value = ActiveSheet.Name
          'create filter formula
          Range("a1").Select
        ActiveCell.Formula2R1C1 = _
            "=FILTER('Master plan'!RC:R[38]C[13],'Master plan'!RC:R[38]C=RC[19])"
        Worksheets("data base").Activate
    Loop
    Application.ScreenUpdating = False
End Sub
ระบบการอ้างอิงแบบ R1C1 คือการอ้างอิงบรรทัดและแถวโดยใช้เซลล์ที่ Active อยู่ ณ ปัจจุบันเป็นเกณฑ์ เช่น RC:R[38]C[13] หมายถึงช่วงเซลล์ มีขอบเขตจากเซลล์ปัจจุบันถึงบรรทัดที่ 38 ถัดไปด้านล่างและถึงคอลัมน์ที่ 13 ถัดไปด้านขวาจากเซลล์ปัจจุบัน

ตัวเลขในก้ามปูมีโอกาสที่จะเป็นลบได้ หากเป็นลบก็จะเป็นทิศทางตรงกันข้าม สิ่งสำคัญจะต้องทราบว่าเซลล์ปัจจุบันคือเซลล์ไหน ไม่เช่นนั้นข้อมูลมีโอกาสผิดพลาดได้มากครับ
Supachok
Gold
Gold
Posts: 1009
Joined: Wed Jun 18, 2014 11:11 am
Excel Ver: 2013

Re: VBA : Add sheet, filter , filename

#3

Post by Supachok »

เรียน ท่านอาจารย์และผู้รู้

หลังจากสร้าง sheet เพิ่มมา 3 sheet แล้ว
- ย้ายตำแหน่ง sheet ให้เหมาะสม
- ต้องการลบ sheet หลังจาก sheet ที่ 2 เป็นต้นไป
ปัญหาตอนนี้คือ (ว่าจะถามใหม่แต่ปรับไปปรับมา ได้หมดแล้วครับ)
- Code ด้านล่าง ลบ 2 sheet และจากนั้น ไม่ออกจาก Loop ทำให้ Excel run code ไม่จบ(ค้าง)
- การลบไม่ต้องให้ Excel ถามว่าจะลบ sheet จริงหรือไม่ = Application.DisplayAlerts = False, True


Do
i = 3
i = i + 1

Sheets(i).Delete
Loop Until IsEmpty(Worksheets)
You do not have the required permissions to view the files attached to this post.
Supachok
Gold
Gold
Posts: 1009
Joined: Wed Jun 18, 2014 11:11 am
Excel Ver: 2013

Re: VBA : Add sheet, filter , filename

#4

Post by Supachok »

ขอบคุณมากครับ ที่ทำให้ผมผ่านไปได้
Post Reply