Page 1 of 1

อยากใช้ VBA มี 2 คำถามค่ะ

Posted: Tue Oct 18, 2016 4:37 pm
by Nanwonka
คือตอนนี้สามารถดึงรูปมาไว้ใน excel ได้แล้วค่ะ โดยใช้ code ดังนี้ค่ะ

Code: Select all

Sub ShowPic()
Dim r As Range, ra As Range
    Dim imgIcon As Object
    Dim obj As Object
    On Error Resume Next
    With Worksheets("Sheet1")
        Set ra = .Range("C2", .Range("B65536").End(xlUp).Offset(0, 1))
    End With
    For Each obj In ActiveSheet.Shapes
        If Left(obj.Name, 2) = "Pict" Then
            obj.Delete
        End If
    Next obj
    For Each r In ra
        Set imgIcon = ActiveSheet.Shapes.AddPicture( _
        Filename:="D:\Pic4Sale\" & r.Offset(0, -1).Value & ".jpg", LinkToFile:=False, _
        SaveWithDocument:=True, Left:=r.Left, Top:=r.Top, _
        Width:=r.Width, Height:=r.Height)
    Next r
End Sub
คำถามที่ 1 นะคะ พอหนูดึงรูปมา รูปจะออกมาเป็นแบบนี้
Image
ซึ่งหนูอยากให้เวลาเรากดดึงรูปภาพมาปุ๊บ ขนาดของแถวและช่องจะขยายใหญ่ขึ้นแบบนี้ โดยมีระยะห่างจากขอบด้วยนิดนึงค่ะ
Image
คำถามที่ 2 นะคะ ช่องที่ดึงรูปและช่องรหัสสินค้ามาสามรถทำคำสั่ง VBA แบบย้าย collum โดยที่ไม่ต้องไปแก้ในโค้ดทุกครั้งได้ไหมคะ เช่นแบบในรูปอ่ะค่ะ
ที่หนูต้องการแบบนี้เพราะว่าเผื่อตรงหัวตารางเปลี่ยนไปค่ะ คือหนูอยากเอารูปแบบนี้ไปใช้กับหลายๆ งานค่ะ
Image
ช่วยหน่อยนะคะ ขอบคุณพี่ๆ ทุกคนมากค่ะ :D

Re: อยากใช้ VBA มี 2 คำถามค่ะ

Posted: Tue Oct 18, 2016 5:32 pm
by snasui
:D Code นั้นยังเป็นต้นฉบับ ยังไม่มีการปรับปรุงมาโดยตนเอง ลองปรับเองดูก่อน ติดแล้วค่อยถามกันต่อ

Re: อยากใช้ VBA มี 2 คำถามค่ะ

Posted: Wed Oct 19, 2016 2:27 pm
by Nanwonka
snasui wrote::D Code นั้นยังเป็นต้นฉบับ ยังไม่มีการปรับปรุงมาโดยตนเอง ลองปรับเองดูก่อน ติดแล้วค่อยถามกันต่อ
หนูขอถามนิดนึงได้ไหมคะ ตอนนี้ติดตรง

Code: Select all

Set ra = .Range("C2", .Range("B8000").End(xlUp).Offset(0, 1))
ถ้าตรง C2 เปลี่ยนเป็นช่วงยังไงได้บ้างคะ คือสมมติมีข้อมูลตั้งแต่ C2 ถึง C10 แล้วถ้าหนูจะเลือกแค่ C3 ถึง C6 ต้องใส่ code ยังไงคะ ลองใส่ C3:C6 แล้ว ข้อมูลที่ดึงมาจะออกมาเป็น C3 ถึง C10 เลยค่ะ
รวบกวนด้วยนะคะ

Re: อยากใช้ VBA มี 2 คำถามค่ะ

Posted: Wed Oct 19, 2016 6:58 pm
by snasui
:D ตามที่ถามมาสามารถใช้ Code นี้ได้ครับ Set ra = .Range("C3:C6")