: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 ไม่ทำงาน

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
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: 31205
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
(425.52 KiB) Downloaded 2 times

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
User avatar
snasui
Site Admin
Site Admin
Posts: 31205
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
(181.1 KiB) Downloaded 3 times
ผมได้แก้ 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
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: 31205
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: 31205
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: 31205
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

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

User avatar
snasui
Site Admin
Site Admin
Posts: 31205
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]
Attachments
คัดโฉนด2022 อัพเดท.xlsm
(258.87 KiB) Downloaded 4 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31205
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