: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 เพื่อ Select ตารางใน Excel จำนวนมากๆ

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
วังวู ช่ง
Silver
Silver
Posts: 804
Joined: Thu May 31, 2012 2:27 pm
Location: Laos
Excel Ver: MS Excel for office 365 MSO
Contact:

ส้าง VBA เพื่อ Select ตารางใน Excel จำนวนมากๆ

#1

Post by วังวู ช่ง »

เรียน ท่านอาจารย์ ที่เคาลบ และสมาชิกทังหลายที่รักแพงครับ ความต้องกาณอยากให้ช่วยเหลือในหัวข้อนี้คือว่า ผมส้างโคดออกมาเพื่อเลือกตารางข้อมูนครับ ผมได้จากกาน Record Macro ครับ (เพาะไม่เก่งกานเขียน VBA) แต่เลือกได้แค่ 11 ตารางครับ ถ้ามีจำนวนมากกว่านี้โดยไม่จำกัด Row & Column ครับ จะแก้ไขตรงไหนครับ

ขอบคุนล่วงหน้าครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30766
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ส้าง VBA เพื่อ Select ตารางใน Excel จำนวนมากๆ

#2

Post by snasui »

:D ผมเห็นว่าคุณ วังวู ช่ง ใช้ ภาษาไทยอยู่บ่อย ๆ นอกจากจะแก้ไขปัญหา Excel ได้แล้วผมอยากให้ทราบภาษาไทยที่ถูกต้องด้วย จึงขอเปรียบเทียบข้อความที่เขียนมากับการเขียนที่ถูกต้องตามด้านล่างครับ

เคาลบ = เคารพ
ส้าง = สร้าง
ต้องกาณ = ต้องการ
ข้อมูน = ข้อมูล
กาน Record Macro = การ Record Macro
ขอบคุน = ขอบคุณ

และขอชมว่าเป็นผู้ที่เขียนภาษาไทยได้เก่งมากครับ Image

Code สำหรับการเลือกข้อมูลตามที่ถามมานั้น ลองดูตามด้านล่างครับ

Code: Select all

Sub Macro01()
    Dim i As Integer, j As Integer, t As String
    With Sheets("List")
        j = .UsedRange.Columns.Count
        For i = 1 To j Step 34
            t = t & .Cells(8, i).CurrentRegion.Resize(.Cells(8, i) _
                .CurrentRegion.Rows.Count + 7).Offset(-7, 0).Address & ","
        Next i
        Application.Goto .Range(Mid(t, 1, Len(t) - 1))
     End With
End Sub
วังวู ช่ง
Silver
Silver
Posts: 804
Joined: Thu May 31, 2012 2:27 pm
Location: Laos
Excel Ver: MS Excel for office 365 MSO
Contact:

Re: ส้าง VBA เพื่อ Select ตารางใน Excel จำนวนมากๆ

#3

Post by วังวู ช่ง »

เรียน ท่านอาจารย์ ที่เคารพครับ ขอบคุณมากที่ช่วยชี้แนะทั้งบดเรียน และพาสาด้วยครับ เรียน ท่าน อาจารย์ ลอง Run Macro ไฟลล์ที่ผมแนบมานี้ว่าคาบันหาอาไลด้วยครับ ผมกรอกโคดของอาจารย์ไปใส่โดยไม่มีการเปรี่ยนแปรงครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30766
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ส้าง VBA เพื่อ Select ตารางใน Excel จำนวนมากๆ

#4

Post by snasui »

:D ผมปรับ Code มาให้ตามด้านล่าง ซึ่งเป็นการสั่ง Print ตามพื้นที่ที่มีข้อมูลทั้งหมด หากยังไม่ต้องการ Print ให้ Mark .PrintOut เป็น Comment ไปก่อนครับ

ภาษาไทยที่ถูกต้อง
บดเรียน = บทเรียน
พาสา = ภาษา
คาบันหาอาไล = ติดปัญหาอะไร
เปรี่ยนแปรง = เปลี่ยนแปลง

Code: Select all

Sub SubSelectTable()
    Dim i As Integer, j As Integer
    With Sheets("List")
        j = .UsedRange.Columns.Count
        For i = 1 To j Step 34
            .PageSetup.PrintArea = .Cells(8, i) _
                .CurrentRegion.Resize(.Cells(8, i) _
                .CurrentRegion.Rows.Count + 7) _
                .Offset(-7, 0).Address
            .PageSetup.PrintTitleRows = "$1:$9"
            .PageSetup.FitToPagesWide = 1
            .PrintOut
        Next i
     End With
End Sub
วังวู ช่ง
Silver
Silver
Posts: 804
Joined: Thu May 31, 2012 2:27 pm
Location: Laos
Excel Ver: MS Excel for office 365 MSO
Contact:

Re: ส้าง VBA เพื่อ Select ตารางใน Excel จำนวนมากๆ

#5

Post by วังวู ช่ง »

เรียน ท่านอาจารย์ ที่เคารพครับ ถ้าแก้ไขโคดลุ่มนี้เป็นการเลือกตารางจำนวนมากๆจะแก้ไขตงไหน และแก้ไขอย่างไลครับ?

Code: Select all

Sub Macro01()
    Dim i As Integer, j As Integer, t As String
    With Sheets("List")
        j = .UsedRange.Columns.Count
        For i = 1 To j Step 34
            t = t & .Cells(8, i).CurrentRegion.Resize(.Cells(8, i) _
                .CurrentRegion.Rows.Count + 7).Offset(-7, 0).Address & ","
        Next i
        Application.Goto .Range(Mid(t, 1, Len(t) - 1))
     End With
End Sub
วังวู ช่ง
Silver
Silver
Posts: 804
Joined: Thu May 31, 2012 2:27 pm
Location: Laos
Excel Ver: MS Excel for office 365 MSO
Contact:

Re: ส้าง VBA เพื่อ Select ตารางใน Excel จำนวนมากๆ

#6

Post by วังวู ช่ง »

เรียน ท่านอาจารย์ ที่เคารพครับ ส่วนโคดข้างลุ่มนี้ผมไม่รู้จะใช้ครับ เพาะเมื่อ Run Macro แล้วเคื่องปรีนเตีจะทำงานทันทีโดยเอาข้อมูลออกมาครับ

Code: Select all

Sub SubSelectTable()
    Dim i As Integer, j As Integer
    With Sheets("List")
        j = .UsedRange.Columns.Count
        For i = 1 To j Step 34
            .PageSetup.PrintArea = .Cells(8, i) _
                .CurrentRegion.Resize(.Cells(8, i) _
                .CurrentRegion.Rows.Count + 7) _
                .Offset(-7, 0).Address
            .PageSetup.PrintTitleRows = "$1:$9"
            .PageSetup.FitToPagesWide = 1
            .PrintOut
        Next i
     End With
End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 30766
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ส้าง VBA เพื่อ Select ตารางใน Excel จำนวนมากๆ

#7

Post by snasui »

วังวู ช่ง wrote:เรียน ท่านอาจารย์ ที่เคารพครับ ถ้าแก้ไขโคดลุ่มนี้เป็นการเลือกตารางจำนวนมากๆจะแก้ไขตงไหน และแก้ไขอย่างไลครับ?

Code: Select all

Sub Macro01()
    Dim i As Integer, j As Integer, t As String
    With Sheets("List")
        j = .UsedRange.Columns.Count
        For i = 1 To j Step 34
            t = t & .Cells(8, i).CurrentRegion.Resize(.Cells(8, i) _
                .CurrentRegion.Rows.Count + 7).Offset(-7, 0).Address & ","
        Next i
        Application.Goto .Range(Mid(t, 1, Len(t) - 1))
     End With
End Sub
สามารถปรับเป็น Code ตามด้านล่างครับ

Code: Select all

Sub SubSelectTable()
    Dim i As Integer, j As Integer, r As Range
    Set r = Sheets("List").Range("A1")
    With Sheets("List")
        j = .UsedRange.Columns.Count
        For i = 1 To j Step 34
            Set r = Union(r, Range(.Cells(8, i).CurrentRegion.Resize(.Cells(8, i) _
                .CurrentRegion.Rows.Count + 7).Offset(-7, 0).Address))
        Next i
        r.Select
     End With
End Sub
วังวู ช่ง wrote:เรียน ท่านอาจารย์ ที่เคารพครับ ส่วนโคดข้างลุ่มนี้ผมไม่รู้จะใช้ครับ เพาะเมื่อ Run Macro แล้วเคื่องปรีนเตีจะทำงานทันทีโดยเอาข้อมูลออกมาครับ

Code: Select all

Sub SubSelectTable()
    Dim i As Integer, j As Integer
    With Sheets("List")
        j = .UsedRange.Columns.Count
        For i = 1 To j Step 34
            .PageSetup.PrintArea = .Cells(8, i) _
                .CurrentRegion.Resize(.Cells(8, i) _
                .CurrentRegion.Rows.Count + 7) _
                .Offset(-7, 0).Address
            .PageSetup.PrintTitleRows = "$1:$9"
            .PageSetup.FitToPagesWide = 1
            .PrintOut
        Next i
     End With
End Sub
กรณีไม่ต้องการ Print สามารถที่จะลบ .PrintOut ออกไปก่อน หรือเติมเครื่องหมาย ' (Single Quote) นำหน้า .PrintOut เพื่อให้เป็น Comment จะได้เป็น '.PrintOut
วังวู ช่ง
Silver
Silver
Posts: 804
Joined: Thu May 31, 2012 2:27 pm
Location: Laos
Excel Ver: MS Excel for office 365 MSO
Contact:

Re: ส้าง VBA เพื่อ Select ตารางใน Excel จำนวนมากๆ

#8

Post by วังวู ช่ง »

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

ช่วยดูให้อีกคั้งครับ ไฟลล์มันใหย่มากครับ ผมแนบไฟลล์ตารางต้นให้

๑. เมื่อเปีดไฟล์ออกมาแล้วเรียนท่านอาจารย์ Run Macro1 ที่ผมใช้โคดของอาจารย์ และผม Record Macro

๒. เรียนท่านอาจารย์ Run SubSelectTable แล้วติดปัญหาครับ


ขอบคุณท่านอาจารย์ล่วงหน้าครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30766
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ส้าง VBA เพื่อ Select ตารางใน Excel จำนวนมากๆ

#9

Post by snasui »

:lol: ที่ไม่ได้เพราะว่าไฟล์ตัวอย่างที่ผ่าน ๆ มาไม่เป็นตัวแทนของไฟล์จริงครับ

ตามไฟล์ที่แนบมาล่าสุดสามารถปรับ Code เป็นด้านล่างครับ

Code: Select all

Sub SubSelectTable()
    Dim i As Integer, j As Integer, r As Range
    Set r = Sheets("List").Range("A1")
    With Sheets("List")
        j = .UsedRange.Columns.Count
        For i = 1 To j Step 34
            Set r = Union(r, .Range(Cells(1, i).CurrentRegion.Address))
        Next i
        r.Select
     End With
End Sub
วังวู ช่ง
Silver
Silver
Posts: 804
Joined: Thu May 31, 2012 2:27 pm
Location: Laos
Excel Ver: MS Excel for office 365 MSO
Contact:

Re: ส้าง VBA เพื่อ Select ตารางใน Excel จำนวนมากๆ

#10

Post by วังวู ช่ง »

:D เรียน ท่านอาจารย์ ที่เคารพครับ ได้คำตอบที่ถูกต้อง และถูกใจที่สุดเลียครับ ขอบคุณท่าน อาจารย์มากครับ

ท้ายสุดนี้ขอเรียนถามท่านอาจารย์ว่า ในกานเรียนแบบผม และสะมาชิกทุกๆท่านใน http://www.snasui.com นี้การชำละค่าจะชำละแบบไหนครับ ผมเหันที่รบกวน ท่าน อาจารย์ และสะมาชิกมามากแล้ว แต่ไม่เหันจะช่วยพวกท่านได้อาไลเลียครับ

ขอบคุณมากครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30766
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ส้าง VBA เพื่อ Select ตารางใน Excel จำนวนมากๆ

#11

Post by snasui »

:D ยินดีด้วยที่ได้คำตอบครับ

http://www.snasui.com ไม่เสียค่าสมาชิกใด ๆ เป็นการให้คำตอบฟรีครับ
วังวู ช่ง
Silver
Silver
Posts: 804
Joined: Thu May 31, 2012 2:27 pm
Location: Laos
Excel Ver: MS Excel for office 365 MSO
Contact:

Re: ส้าง VBA เพื่อ Select ตารางใน Excel จำนวนมากๆ

#12

Post by วังวู ช่ง »

เรียน ท่านอาจารย์ ที่เคารพครับ จะรบกวนมากไปหรือเปล่าครับ นี้เป็นแค่อยากจะเรียนรู้เพี่มเตีม อยากจะเรียนถามท่าน อาจารย์ และสะมาชิกใน http://www.snasui.com ทุกๆท่านว่า ในโคดข้างลุ่มนี้ ถ้าเกีดสมหมุดว่า อยากจะเลือกท้ายตารางลงตื่มอีกประมาณ 10 แถว
ตัวอย่าง ในตารางที่ ๑ ต้องกานเลือก A1:AG680 (ในโคดของอาจารย์แม่น A1:AG670) หมายความว่าเลือกลงอีก 10 แถวทุกๆตารางครับ อยากสาบว่าในโคดนั้นจะเพี่มเข้า หลื ลดตัวไหนลงครับ

Code: Select all

Sub SubSelectTable()
    Dim i As Integer, j As Integer, r As Range
    Set r = Sheets("List").Range("A1")
    With Sheets("List")
        j = .UsedRange.Columns.Count
        For i = 1 To j Step 34
            Set r = Union(r, .Range(Cells(1, i).CurrentRegion.Address))
        Next i
        r.Select
     End With
End Sub
หมายเหด เป็นกาณอยากเรียนรู้เพี่มเตีมครับ และเป็นไฟล์นี้เองครับ
ส้าง VBA เพื่อ Select ตารางใน Excel.xlsm [162.58 KiB]
User avatar
songsug
Member
Member
Posts: 71
Joined: Wed Apr 04, 2012 11:22 am
Location: สมุทรสาคร

Re: ส้าง VBA เพื่อ Select ตารางใน Excel จำนวนมากๆ

#13

Post by songsug »

อาจารย์ต้องเปิดห้องสอนภาษาไทยแล้วล่ะผมว่า :lol:
User avatar
snasui
Site Admin
Site Admin
Posts: 30766
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ส้าง VBA เพื่อ Select ตารางใน Excel จำนวนมากๆ

#14

Post by snasui »

:D สามารถปรับ Code เป็นตามด้านล่างครับ
ภาษาไทยที่ถูกต้อง
ข้างลุ่มนี้ = ข้างล่างนี้
สมหมุด = สมมุติ
ต้องกาน = ต้องการ
อยากสาบ = อยากทราบ
หลื = หรือ

Code: Select all

Sub SubSelectTable()
    Dim i As Integer, j As Integer, r As Range
    Set r = Sheets("List").Range("A1")
    With Sheets("List")
        j = .UsedRange.Columns.Count
        For i = 1 To j Step 34
            Set r = Union(r, Range(.Cells(1, i).CurrentRegion.Resize(.Cells(1, i) _
                .CurrentRegion.Rows.Count + 10).Address))
        Next i
        r.Select
     End With
End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 30766
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ส้าง VBA เพื่อ Select ตารางใน Excel จำนวนมากๆ

#15

Post by snasui »

songsug wrote:อาจารย์ต้องเปิดห้องสอนภาษาไทยแล้วล่ะผมว่า :lol:
:lol: คุณ วังวู ช่ง เป็นสมาชิกจากประเทศเพื่อนบ้านเรา จึงไม่ถนัดภาษาไทยครับ
วังวู ช่ง
Silver
Silver
Posts: 804
Joined: Thu May 31, 2012 2:27 pm
Location: Laos
Excel Ver: MS Excel for office 365 MSO
Contact:

Re: ส้าง VBA เพื่อ Select ตารางใน Excel จำนวนมากๆ

#16

Post by วังวู ช่ง »

เรียน ท่านอาจารย์ ที่เคารพครับ ได้จิงๆครับ
ขอบคุณท่าน อาจารย์มากครับ

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

โชกดีด้วยครับผม
Post Reply