Page 1 of 1

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

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

ขอบคุนล่วงหน้าครับ

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

Posted: Mon Jun 25, 2012 8:43 pm
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

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

Posted: Tue Jun 26, 2012 7:20 am
by วังวู ช่ง
เรียน ท่านอาจารย์ ที่เคารพครับ ขอบคุณมากที่ช่วยชี้แนะทั้งบดเรียน และพาสาด้วยครับ เรียน ท่าน อาจารย์ ลอง Run Macro ไฟลล์ที่ผมแนบมานี้ว่าคาบันหาอาไลด้วยครับ ผมกรอกโคดของอาจารย์ไปใส่โดยไม่มีการเปรี่ยนแปรงครับ

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

Posted: Tue Jun 26, 2012 6:10 pm
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

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

Posted: Tue Jun 26, 2012 10:02 pm
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

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

Posted: Tue Jun 26, 2012 10:07 pm
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

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

Posted: Wed Jun 27, 2012 12:24 am
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

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

Posted: Wed Jun 27, 2012 7:52 am
by วังวู ช่ง
เรียน ท่านอาจารย์ ที่เคารพครับ ขอโทดครับ ที่รบกวนท่านอาจารย์มากครับ มื้นี้เองครับผมจะทำงานตัวจิงในตารางนี้ครับ เวลา 14 โมงครับ ขอบคุณนำโคดของอาจารย์มากครับ แต่ปัญหาคือว่า ใช้ได้แค่ตารางที่ผมแนบมาครับ ผมมาใช้กรับตารางที่มีข้อมูนจิงไม่ได้ครับ

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

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

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


ขอบคุณท่านอาจารย์ล่วงหน้าครับ

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

Posted: Wed Jun 27, 2012 6:18 pm
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

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

Posted: Wed Jun 27, 2012 10:12 pm
by วังวู ช่ง
:D เรียน ท่านอาจารย์ ที่เคารพครับ ได้คำตอบที่ถูกต้อง และถูกใจที่สุดเลียครับ ขอบคุณท่าน อาจารย์มากครับ

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

ขอบคุณมากครับ

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

Posted: Wed Jun 27, 2012 10:15 pm
by snasui
:D ยินดีด้วยที่ได้คำตอบครับ

http://www.snasui.com ไม่เสียค่าสมาชิกใด ๆ เป็นการให้คำตอบฟรีครับ

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

Posted: Wed Jun 27, 2012 11:22 pm
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]

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

Posted: Wed Jun 27, 2012 11:25 pm
by songsug
อาจารย์ต้องเปิดห้องสอนภาษาไทยแล้วล่ะผมว่า :lol:

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

Posted: Wed Jun 27, 2012 11:32 pm
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

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

Posted: Wed Jun 27, 2012 11:33 pm
by snasui
songsug wrote:อาจารย์ต้องเปิดห้องสอนภาษาไทยแล้วล่ะผมว่า :lol:
:lol: คุณ วังวู ช่ง เป็นสมาชิกจากประเทศเพื่อนบ้านเรา จึงไม่ถนัดภาษาไทยครับ

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

Posted: Thu Jun 28, 2012 6:54 am
by วังวู ช่ง
เรียน ท่านอาจารย์ ที่เคารพครับ ได้จิงๆครับ
ขอบคุณท่าน อาจารย์มากครับ

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

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