VBA ShowPicture แบบหลายรูปภาพ
Posted: Mon Nov 14, 2016 4:14 pm
สวัสดีครับ ผมขอออกตัวก่อนนะครับ ว่าหัดทำ VBA ครั้งแรก
ผมต้องการที่จะแสดงรูปภาพ แล้วผมก็ลองค้นหาได้เจอแนวๆการทำจากเวปบล๊อคของทางเวปพอดี
อนุญาติแนบ Link นะครับ เห็นว่าเป็นเจ้าของเวปเดียวกัน
http://snasui.blogspot.com/2011/05/folder-excel.html
แต่ผมต้องการมากกว่าที่เวปแสดงให้ครับ คือ
1. ต้องการให้แสดงภาพ 3 ภาพ โดยใช้ชื่อการหาเดียวกัน ซึ่งผมได้ลองทำแล้ว แต่ต้องทำการแยกปุ่มกดแสดง
แต่เวลากดปุ่มแสดงภาพ Picture 1 แต่รูปไม่แสดงภาพ 1 ช่องเดียว แต่กลับแสดงภาพ 1 ถึง 3 ช่อง
ซึ่งผมต้องการจริงๆคือ ต้องการใช้แค่ปุ่มเดียว แต่แสดงทีเดียว 3 ภาพ แต่ผมไม่ทราบว่า จะต่อสูตรอย่างไร แทรกอยู่ส่วนไหนของสูตร
2. ผมเจอปัญหาภาพไม่แสดงทั้งเซลล์ที่ผสานครับ แสดงแค่ cell นั้นๆ
3. ผมอยากทราบจุดที่สูตรจะใช้ในการหาครับ ผมหาไม่เจอ คือผมต้องการให้หาข้อมูลจาก cell M10 ที่ลองแก้ไขดูจากสูตรที่มีในเวปคือ หาข้อมูลจาก เซลล์ด้านซ้าย ถ้ากรอกเป็นพิกัดเซลล์ต้องทำอย่างไรครับ
สูตรที่เขียนครับ
อาจจะยาวบ้าง เพราะเพิ่งหัดทำครับ ผิดตรงไหน หรือเขียนแบบไหนง่ายกว่า รบกวนช่วยชี้แนะด้วยครับ
ขอบคุณครับ
ผมต้องการที่จะแสดงรูปภาพ แล้วผมก็ลองค้นหาได้เจอแนวๆการทำจากเวปบล๊อคของทางเวปพอดี
อนุญาติแนบ Link นะครับ เห็นว่าเป็นเจ้าของเวปเดียวกัน
http://snasui.blogspot.com/2011/05/folder-excel.html
แต่ผมต้องการมากกว่าที่เวปแสดงให้ครับ คือ
1. ต้องการให้แสดงภาพ 3 ภาพ โดยใช้ชื่อการหาเดียวกัน ซึ่งผมได้ลองทำแล้ว แต่ต้องทำการแยกปุ่มกดแสดง
แต่เวลากดปุ่มแสดงภาพ Picture 1 แต่รูปไม่แสดงภาพ 1 ช่องเดียว แต่กลับแสดงภาพ 1 ถึง 3 ช่อง
ซึ่งผมต้องการจริงๆคือ ต้องการใช้แค่ปุ่มเดียว แต่แสดงทีเดียว 3 ภาพ แต่ผมไม่ทราบว่า จะต่อสูตรอย่างไร แทรกอยู่ส่วนไหนของสูตร
2. ผมเจอปัญหาภาพไม่แสดงทั้งเซลล์ที่ผสานครับ แสดงแค่ cell นั้นๆ
3. ผมอยากทราบจุดที่สูตรจะใช้ในการหาครับ ผมหาไม่เจอ คือผมต้องการให้หาข้อมูลจาก cell M10 ที่ลองแก้ไขดูจากสูตรที่มีในเวปคือ หาข้อมูลจาก เซลล์ด้านซ้าย ถ้ากรอกเป็นพิกัดเซลล์ต้องทำอย่างไรครับ
สูตรที่เขียนครับ
Code: Select all
Sub ShowPicture1()
Dim r1 As Range, ra1 As Range
Dim imgIcon1 As Object
Dim obj1 As Object
On Error Resume Next
With Worksheets("1")
Set ra1 = .Range("C15", .Range("F65536").End(xlUp).Offset(0, 1))
End With
For Each obj1 In ActiveSheet.Shapes
If Left(obj1.Name, 1) = "Pict" Then
obj1.Delete
End If
Next obj1
For Each r1 In ra1
Set imgIcon1 = ActiveSheet.Shapes.AddPicture( _
Filename:="D:\testvba\" & r1.Offset(0, -1).Value & "-1.jpg", LinkToFile:=False, _
SaveWithDocument:=True, Left:=r1.Left, Top:=r1.Top, _
Width:=r1.Width, Height:=r1.Height)
Next r1
End Sub
Sub ShowPicture2()
Dim r2 As Range, ra2 As Range
Dim imgIcon2 As Object
Dim obj2 As Object
On Error Resume Next
With Worksheets("1")
Set ra2 = .Range("J16", .Range("F65536").End(xlUp).Offset(0, 1))
End With
For Each obj2 In ActiveSheet.Shapes
If Left(obj2.Name, 1) = "Pict" Then
obj2.Delete
End If
Next obj2
For Each r2 In ra2
Set imgIcon2 = ActiveSheet.Shapes.AddPicture( _
Filename:="D:\testvba\" & r2.Offset(0, -1).Value & "-2.jpg", LinkToFile:=False, _
SaveWithDocument:=True, Left:=r2.Left, Top:=r2.Top, _
Width:=r2.Width, Height:=r2.Height)
Next r2
End Sub
Sub ShowPicture3()
Dim r3 As Range, ra3 As Range
Dim imgIcon3 As Object
Dim obj3 As Object
On Error Resume Next
With Worksheets("1")
Set ra3 = .Range("I18", .Range("F65536").End(xlUp).Offset(0, 1))
End With
For Each obj3 In ActiveSheet.Shapes
If Left(obj3.Name, 1) = "Pict" Then
obj3.Delete
End If
Next obj3
For Each r3 In ra3
Set imgIcon3 = ActiveSheet.Shapes.AddPicture( _
Filename:="D:\testvba\" & r3.Offset(0, -1).Value & "-3.jpg", LinkToFile:=False, _
SaveWithDocument:=True, Left:=r3.Left, Top:=r3.Top, _
Width:=r3.Width, Height:=r3.Height)
Next r3
End Sub
ขอบคุณครับ