Page 1 of 1

ใช้ VBA วางรูปภาพให้อยู่กึ่งกลาง cell

Posted: Thu Sep 14, 2023 5:13 pm
by lekhot
สามารถใช้ VBA วางรูปภาพให้อยู่กึ่งกลาง cell ได้หรือไม่ครับ

ในไฟล์จะต้องเรียกรูปภาพจากโฟล์เดอร์ "D:\test_ali\picture\"

Image
Image

Dim img_shape As Shape
Set img_shape = ActiveSheet.Shapes.AddPicture(Filename:=img_url, _
LinkToFile:=msoFalse, _
SaveWithDocument:=msoTrue, _
Left:=c.Offset(row_offset, col_offset).Left + 2, _
Top:=c.Offset(row_offset, col_offset).Top + 2, _
Width:=-1, Height:=-1)

' MsgBox (img_shape.Width)
Dim max_long_edge As Integer
max_long_edge = 120
Dim scale_ratio As Double
If img_shape.Width > max_long_edge Then ' Or img_shape.Height > max_long_edge Then
scale_ratio = max_long_edge / img_shape.Width
img_shape.Width = Int(scale_ratio * img_shape.Width)
End If

If img_shape.Height > c.RowHeight Then
scale_ratio = c.RowHeight / img_shape.Height
img_shape.Height = Int(scale_ratio * img_shape.Height) - 4
End If


ในโค๊ดจะวางชิดด้านซ้าย-บน โดยปรับขนาดรูปตามขนาด cell (ตรงความต้องการแล้ว)
แต่ผมต้องการให้วางตรงกึ่งกลางแนวตั้ง และกึ่งกลางแนวนอน ซึ่งยังทำไม่ได้

รบกวนสมาชิกแนะนำด้วยครับ
test_ali.zip

Re: ใช้ VBA วางรูปภาพให้อยู่กึ่งกลาง cell

Posted: Thu Sep 14, 2023 7:34 pm
by lekhot
เพิ่งจะเห็นวิธีการวาง code VBA ในความเห็น
พรุ่งนี้จะลองวาง code ให้ถูกต้องนะครับ

Re: ใช้ VBA วางรูปภาพให้อยู่กึ่งกลาง cell

Posted: Fri Sep 15, 2023 7:09 am
by snasui
:D การวาง Code ให้แสดงเป็นอักษร Code เพื่อจะได้แตกต่างจากอักษรปกติ สะดวกต่อการอ่านของเพื่อนสมาชิก ดูที่กฎการใช้บอร์ดข้อ 5 ด้านบน :roll: ซึ่งก็คือ Link นี้ http://snasui.com/viewtopic.php?f=6&t=1187 ครับ

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

Code: Select all

'Other code
'    MsgBox (img_shape.Width)
    Dim max_long_edge As Integer
    max_long_edge = 120
    Dim scale_ratio As Double
    If img_shape.Width > max_long_edge Then ' Or img_shape.Height > max_long_edge Then
        scale_ratio = max_long_edge / img_shape.Width
        img_shape.Width = Int(scale_ratio * img_shape.Width)
    End If
'    If img_shape.Height > max_long_edge Then
    If img_shape.Height > c.RowHeight Then
        scale_ratio = c.RowHeight / img_shape.Height
        img_shape.Height = Int(scale_ratio * img_shape.Height) - 4
    End If
    img_shape.Left = img_shape.Left + (c.Offset(row_offset, col_offset).Width - img_shape.Width) \ 2
    img_shape.Top = img_shape.Top - (c.Offset(row_offset, col_offset).Top - img_shape.Top) \ 2
'Other code
ลองปรับใช้ดูครับ

Re: ใช้ VBA วางรูปภาพให้อยู่กึ่งกลาง cell

Posted: Fri Sep 15, 2023 8:24 am
by lekhot
ใช้ได้แล้วครับ ขอบคุณคุณคนควนมากๆครับ