: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 ค้นหาข้อมูลหลายชีตแล้ว Hyperlink ไม่ทำงาน

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
LomHoun
Member
Member
Posts: 7
Joined: Fri May 27, 2022 10:52 am
Excel Ver: 2016

VBA ค้นหาข้อมูลหลายชีตแล้ว Hyperlink ไม่ทำงาน

#1

Post by LomHoun »

ผมทำการค้นหาข้อมูลจากหลายชีต ซึ่งแต่ละชีตจะมีข้อมูลที่เป็น Hyperlink อยู่ครับ พอค้นหาข้อมูลมาโชว์แล้วไม่สามารถคลิก link ที่เป็น Hyperlink ได้ครับ ผมอยากให้ค้นหาแล้วยังสามารถใช้งาน Hyperlink ได้เหมือนในชีตต่างๆ ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31177
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: VBA ค้นหาข้อมูลหลายชีตแล้ว Hyperlink ไม่ทำงาน

#2

Post by snasui »

:D กรุณาแนบไฟล์พร้อม Code ที่เขียนไว้เองแล้วมาด้วย ชี้ให้เห็นว่าติดปัญหาที่ Module ไหน Procedure ใดตามกฎข้อ 5 ด้านบน :roll: จะได้สะดวกในการตอบของเพื่อนสมาชิกครับ
LomHoun
Member
Member
Posts: 7
Joined: Fri May 27, 2022 10:52 am
Excel Ver: 2016

Re: VBA ค้นหาข้อมูลหลายชีตแล้ว Hyperlink ไม่ทำงาน

#3

Post by LomHoun »

test.xlsm

Code: Select all

Sub SearchMultipleSheets()
    Dim arr(999, 10) As Variant, r As Range
    Dim ws As Worksheet, i As Integer, s As String
    With Sheets(1)
        s = .Range("c2").Value
        .Range("a5").Resize(.UsedRange.Rows.Count, _
            .UsedRange.Columns.Count).ClearContents
    End With
    For Each ws In Worksheets
        If ws.Name <> Sheets(1).Name Then
            With ws
                For Each r In .Range("a4", .Range("a" & .Rows.Count).End(xlUp))
                    If r.Value & r.Offset(0, 1).Value & r.Offset(0, 2).Value & _
                        r.Offset(0, 3).Value & r.Offset(0, 4).Value & r.Offset(0, 5).Value _
                        & r.Offset(0, 6).Value & r.Offset(0, 7).Value & r.Offset(0, 8).Value _
                        & r.Offset(0, 9).Value Like "*" & s & "*" Then
                        arr(i, 0) = r.Value
                        arr(i, 1) = r.Offset(0, 1).Value
                        arr(i, 2) = r.Offset(0, 2).Value
                        arr(i, 3) = r.Offset(0, 3).Value
                        arr(i, 4) = r.Offset(0, 4).Value
                        arr(i, 5) = r.Offset(0, 5).Value
                        arr(i, 6) = r.Offset(0, 6).Value
                        arr(i, 7) = r.Offset(0, 7).Value
                        arr(i, 8) = r.Offset(0, 8).Value
                        arr(i, 9) = r.Offset(0, 9).Value
                        arr(i, 10) = ws.Name
                        i = i + 1
                    End If
                Next r
            End With
        End If
    Next ws
    With Sheets(1)
        .Range("a5").Resize(i, 11).Value = arr
    End With
End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31177
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: VBA ค้นหาข้อมูลหลายชีตแล้ว Hyperlink ไม่ทำงาน

#4

Post by snasui »

:D ค้นหามาตาม Code นั้นย่อมคลิก Link ไม่ได้อยู่แล้วเพราะมันจะเอามาเฉพาะค่าเท่านั้น ไม่ได้นำ Link มาด้วย กรุณาเขียน Code สำหรับการเพิ่ม Link เข้ามาด้วย จากนั้นนำสิ่งที่ติดปัญหามาถามกันต่อครับ
LomHoun
Member
Member
Posts: 7
Joined: Fri May 27, 2022 10:52 am
Excel Ver: 2016

Re: VBA ค้นหาข้อมูลหลายชีตแล้ว Hyperlink ไม่ทำงาน

#5

Post by LomHoun »

คัดโฉนด2022 อัพเดท.xlsm
ผมได้แก้ Code แล้วแต่ยังติดบัคครับ
Image

Code: Select all

Sub searchMultiplesheets()
    Dim r As Range, t As Range
    Dim ws As Worksheet, i As Integer, s As String
    With Sheets(1)
        s = .Range("c2").Value
        .Range("a5").Resize(.UsedRange.Rows.Count, _
        .UsedRange.Columns.Count).ClearContents
    End With
    For Each ws In Worksheets
        If ws.Name <> Sheets(1).Name Then
            With ws
                For Each r In .Range("a3", .Range("a" & .Rows.Count).End(xlUp))
                    If r.Value & r.Offset(0, 1).Value & r.Offset(0, 2).Value & _
                        r.Offset(0, 3).Value & r.Offset(0, 4).Value & r.Offset(0, 5).Value _
                        & r.Offset(0, 6).Value & r.Offset(0, 7).Value & r.Offset(0, 8).Value _
                        & r.Offset(0, 9).Value & r.Offset(0, 10).Value & r.Offset(0, 11).Value _
                        & r.Offset(0, 12).Value Like "*" & s & "*" Then
                            
                            With Sheets(1)
                                Set t = .Range("a" & .Rows.Count).End(xlUp).Offset(1, 0).Resize(1, 12)
                                r.Resize(1, 12).Copy t
                            End With
                            Application.CutCopyMode = False
                    End If
                Next r
            End With
        End If
    Next ws
End Sub
You do not have the required permissions to view the files attached to this post.
Last edited by LomHoun on Tue May 31, 2022 6:14 pm, edited 1 time in total.
User avatar
snasui
Site Admin
Site Admin
Posts: 31177
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: VBA ค้นหาข้อมูลหลายชีตแล้ว Hyperlink ไม่ทำงาน

#6

Post by snasui »

:D แนบไฟล์ที่ได้ปรับปรุง Code ล่าสุดมาด้วยจะได้ตอบต่อไปจากนั้นครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31177
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: VBA ค้นหาข้อมูลหลายชีตแล้ว Hyperlink ไม่ทำงาน

#7

Post by snasui »

:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Sub searchMultiplesheets()
    Dim r As Range, t As Range
    Dim ws As Worksheet, i As Integer, s As String
    Application.EnableEvents = False
    With Sheets(1)
        .Range("a5").Resize(10000, 12).UnMerge
        .Range("a5", .Range("a" & .Rows.Count).End(xlUp)).Resize(, 12).ClearContents
        s = .Range("c2").Value
        .Range("a5").Resize(.UsedRange.Rows.Count, _
        .UsedRange.Columns.Count).ClearContents
    End With
    For Each ws In Worksheets
        If ws.Name <> Sheets(1).Name Then
            With ws
                For Each r In .Range("a3", .Range("a" & .Rows.Count).End(xlUp))
                    If r.Value & r.Offset(0, 1).Value & r.Offset(0, 2).Value & _
                        r.Offset(0, 3).Value & r.Offset(0, 4).Value & r.Offset(0, 5).Value _
                        & r.Offset(0, 6).Value & r.Offset(0, 7).Value & r.Offset(0, 8).Value _
                        & r.Offset(0, 9).Value & r.Offset(0, 10).Value & r.Offset(0, 11).Value _
                        & r.Offset(0, 12).Value Like "*" & s & "*" Then
                        
                        With Sheets(1)
                            Set t = .Range("a" & .Rows.Count).End(xlUp).Offset(1, 0).Resize(1, 12)
                            r.Resize(1, 12).Copy t
                        End With
                        Application.CutCopyMode = False
                    End If
                Next r
            End With
        End If
    Next ws
    Application.EnableEvents = True
End Sub
LomHoun
Member
Member
Posts: 7
Joined: Fri May 27, 2022 10:52 am
Excel Ver: 2016

Re: VBA ค้นหาข้อมูลหลายชีตแล้ว Hyperlink ไม่ทำงาน

#8

Post by LomHoun »

ผมได้ทำการปรับแก้ Code แล้ว เมื่อทำการคนหา 4 ครั้งขึ้นไป การแสดงผลออกมาผิดพลาดครับ
Image
User avatar
snasui
Site Admin
Site Admin
Posts: 31177
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: VBA ค้นหาข้อมูลหลายชีตแล้ว Hyperlink ไม่ทำงาน

#9

Post by snasui »

:D ปรับแก้เป็นอะไรและผิดพลาดอย่างไร กรุณาอธิบายพร้อมแนบไฟล์ล่าสุดมาด้วยเสมอครับ
LomHoun
Member
Member
Posts: 7
Joined: Fri May 27, 2022 10:52 am
Excel Ver: 2016

Re: VBA ค้นหาข้อมูลหลายชีตแล้ว Hyperlink ไม่ทำงาน

#10

Post by LomHoun »

ผมได้ทำการปรับแก้ Code แล้ว เมื่อทำการคนหาหลายๆครั้ง การแสดงผลออกมาผิดพลาด และดึงข้อมูลมาแสดงไม่ครบครับครับ
Image

ใน Sheet ที่ไม่มีข้อมูล ก็จะดึงเอาหัวข้อมาแสดง โดยที่ผมไม่ต้องการให้แสดงหัวข้อครับ
Image
คัดโฉนด2022 อัพเดท.xlsm

Code: Select all

Sub searchMultiplesheets()
    Dim r As Range, t As Range
    Dim ws As Worksheet, i As Integer, s As String
    Application.EnableEvents = False
    With Sheets(1)
        .Range("a5").Resize(10000, 12).UnMerge
        .Range("a5", .Range("a" & .Rows.Count).End(xlUp)).Resize(, 12).ClearContents
        s = .Range("c2").Value
        .Range("a5").Resize(.UsedRange.Rows.Count, _
        .UsedRange.Columns.Count).ClearContents
    End With
    For Each ws In Worksheets
        If ws.Name <> Sheets(1).Name Then
            With ws
                For Each r In .Range("a3", .Range("a" & .Rows.Count).End(xlUp))
                    If r.Value & r.Offset(0, 1).Value & r.Offset(0, 2).Value & _
                        r.Offset(0, 3).Value & r.Offset(0, 4).Value & r.Offset(0, 5).Value _
                        & r.Offset(0, 6).Value & r.Offset(0, 7).Value & r.Offset(0, 8).Value _
                        & r.Offset(0, 9).Value & r.Offset(0, 10).Value & r.Offset(0, 11).Value _
                        & r.Offset(0, 12).Value Like "*" & s & "*" Then
                        
                        With Sheets(1)
                            Set t = .Range("a" & .Rows.Count).End(xlUp).Offset(1, 0).Resize(1, 12)
                            r.Resize(1, 12).Copy t
                        End With
                        Application.CutCopyMode = False
                    End If
                Next r
            End With
        End If
    Next ws
    Application.EnableEvents = True
End Sub

You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31177
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: VBA ค้นหาข้อมูลหลายชีตแล้ว Hyperlink ไม่ทำงาน

#11

Post by snasui »

:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Sub searchMultiplesheets()
    Dim r As Range, t As Range
    Dim ws As Worksheet, i As Integer, s As String
    Application.EnableEvents = False
    With Sheets(1)
        .Range("a5").Resize(10000, 12).UnMerge
        If .Range("a5").Value <> "" Then
            .Range("a5", .Range("a" & .Rows.Count).End(xlUp)).Resize(, 12).ClearContents
        End If
        s = .Range("c2").Value
        .Range("a5").Resize(.UsedRange.Rows.Count, _
            .UsedRange.Columns.Count).ClearContents
    End With
    For Each ws In Worksheets
        If ws.Name <> Sheets(1).Name Then
            With ws
                If .Range("l3").Value <> "" Then
                    For Each r In .Range("a3", .Range("a" & .Rows.Count).End(xlUp))
                        If r.Value & r.Offset(0, 1).Value & r.Offset(0, 2).Value & _
                            r.Offset(0, 3).Value & r.Offset(0, 4).Value & r.Offset(0, 5).Value _
                            & r.Offset(0, 6).Value & r.Offset(0, 7).Value & r.Offset(0, 8).Value _
                            & r.Offset(0, 9).Value & r.Offset(0, 10).Value & r.Offset(0, 11).Value _
                            & r.Offset(0, 12).Value Like "*" & s & "*" Then
                            
                            With Sheets(1)
                                Set t = .Range("a" & .Rows.Count).End(xlUp).Offset(1, 0).Resize(1, 12)
                                r.Resize(1, 12).Copy t
                            End With
                            Application.CutCopyMode = False
                        End If
                    Next r
                End If
            End With
        End If
    Next ws
    Application.EnableEvents = True
End Sub
LomHoun
Member
Member
Posts: 7
Joined: Fri May 27, 2022 10:52 am
Excel Ver: 2016

Re: VBA ค้นหาข้อมูลหลายชีตแล้ว Hyperlink ไม่ทำงาน

#12

Post by LomHoun »

ขอสอบถามเพิ่มเติมครับ ในการค้นหา เช่น ค้นหาคำว่า บึ่งกุ่ม ก็จะมีข้อมูลมาแสดงแค่ในแถวที่ A1 มีข้อมูลอยู่ ส่วนแถวที่ A1 ไม่มีข้อมูลก็จะไม่ถูกดึงมาแสดง จึงทำให้ค้นหาข้อมูลได้ไม่ครบ แบบนี้ควรแก้ยังไงครับ

ภาพนี้เป็นหน้าแสดงข้อมูลจากการค้นคำว่า บึงกุ่ม
Image

ภาพนี้เป็นข้อมูลจริงที่อยู่ใน Sheet เมื่อเทียบกันดูแล้วจะเห็นว่าข้อมูลมาไม่ครบครับ
Image

Code: Select all

Sub searchMultiplesheets()
    Dim r As Range, t As Range
    Dim ws As Worksheet, i As Integer, s As String
    Application.EnableEvents = False
    With Sheets(1)
        .Range("a5").Resize(10000, 12).UnMerge
        If .Range("a5").Value <> "" Then
            .Range("a5", .Range("a" & .Rows.Count).End(xlUp)).Resize(, 12).ClearContents
        End If
        s = .Range("c2").Value
        .Range("a5").Resize(.UsedRange.Rows.Count, _
            .UsedRange.Columns.Count).ClearContents
    End With
    For Each ws In Worksheets
        If ws.Name <> Sheets(1).Name Then
            With ws
                If .Range("l3").Value <> "" Then
                    For Each r In .Range("a3", .Range("a" & .Rows.Count).End(xlUp))
                        If r.Value & r.Offset(0, 1).Value & r.Offset(0, 2).Value & _
                            r.Offset(0, 3).Value & r.Offset(0, 4).Value & r.Offset(0, 5).Value _
                            & r.Offset(0, 6).Value & r.Offset(0, 7).Value & r.Offset(0, 8).Value _
                            & r.Offset(0, 9).Value & r.Offset(0, 10).Value & r.Offset(0, 11).Value _
                            & r.Offset(0, 12).Value Like "*" & s & "*" Then
                            
                            With Sheets(1)
                                Set t = .Range("a" & .Rows.Count).End(xlUp).Offset(1, 0).Resize(1, 12)
                                r.Resize(1, 12).Copy t
                            End With
                            Application.CutCopyMode = False
                        End If
                    Next r
                End If
            End With
        End If
    Next ws
    Application.EnableEvents = True
End Sub

[attachment=0]คัดโฉนด2022 อัพเดท.xlsm[/attachment]
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31177
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: VBA ค้นหาข้อมูลหลายชีตแล้ว Hyperlink ไม่ทำงาน

#13

Post by snasui »

:D ตัวอย่างการปรับ Code ครับ

Code: Select all

'Other code
With Sheets(1)
    Set t = .Cells(.Range("l" & .Rows.Count).End(xlUp).Offset(1, 0).Row, 1).Resize(1, 12)
    r.Resize(1, 12).Copy t
End With
'Other code
LomHoun
Member
Member
Posts: 7
Joined: Fri May 27, 2022 10:52 am
Excel Ver: 2016

Re: VBA ค้นหาข้อมูลหลายชีตแล้ว Hyperlink ไม่ทำงาน

#14

Post by LomHoun »

ได้แล้วครับ ขอบคุณมากเลยครับ
Post Reply