snasui.com ยินดีต้อนรับ ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
Sub FitPicture()
On Error GoTo NOT_SHAPE
Dim r As Range, sel As Shape
Set sel = ActiveSheet.Shapes(Selection.Name)
sel.LockAspectRatio = msoTrue
Set r = Range(sel.TopLeftCell.MergeArea.Address)
ActiveSheet.Shapes.Range(Array("Picture 1")).Select
Selection.ShapeRange.Left = [A11].Left
Selection.ShapeRange.Top = [A11].Top
Select Case (r.Width / r.Height) / (sel.Width / sel.Height)
Case Is > 1
sel.Height = r.Height * 0.9
Case Else
sel.Width = r.Width * 0.9
End Select
sel.Top = r.Top + (r.Height - sel.Height) / 2
sel.Left = r.Left + (r.Width - sel.Width) / 2
Exit Sub
NOT_SHAPE:
MsgBox "Please select a picture first."
End Sub
รูปอยู่ตรงกลางพร้อม Merge cell.xlsm
You do not have the required permissions to view the files attached to this post.
จาก Statement นี้ Set sel = ActiveSheet.Shapes(Selection.Name) เป็นการเลือกรูปเอาไว้ก่อนโดยผู้ใช้ หากต้องการให้โปรแกรมเลือกเอง สามารถเปลี่ยนเป็น Set sel = ActiveSheet.Shapes(1) หมายถึงเลือก Shapes (ในที่นี้คือรูป) ที่ 1 ครับ
snasui wrote: Sat Feb 25, 2023 8:31 am
จาก Statement นี้ Set sel = ActiveSheet.Shapes(Selection.Name) เป็นการเลือกรูปเอาไว้ก่อนโดยผู้ใช้ หากต้องการให้โปรแกรมเลือกเอง สามารถเปลี่ยนเป็น Set sel = ActiveSheet.Shapes(1) หมายถึงเลือก Shapes (ในที่นี้คือรูป) ที่ 1 ครับ