我一直试图解决这个问题。以下代码将您选择的图片插入我的Excel文档。它将图片放在单元格B10中,并将其大小调整到我合并的单元格之一的高度。现在的问题是我无法将其置于中心位置。
.Left = 35#
使用上面的一行我可以手动居中一张图片,但我希望其他宽度的其他图片也居中。任何人都可以帮我解决这个问题吗?以下代码是我一直在使用的代码。提前谢谢!
Sub Insert_Pic_Section_One()
Dim fileName1 As Variant
fileName1 = Application.GetOpenFilename(filefilter:="Tiff Files(*.tif;*.tiff),*.tif;*.tiff,JPEG Files (*.jpg;*.jpeg;*.jfif;*.jpe),*.jpg;*.jpeg;*.jfif;*.jpe,Bitmap Files(*.bmp),*.bmp", FilterIndex:=2, Title:="Choose picture", MultiSelect:=False)
If fileName1 = False Then
Exit Sub
Else
ActiveWorkbook.ActiveSheet.Select
Range("B10").Select
Dim picture1 As Object
Set picture1 = ActiveWorkbook.ActiveSheet.Pictures.Insert(fileName1)
With picture1
.Top = .Top
.Left = 35#
.Width = .Width
.Height = 233#
End With
End If
End Sub
答案 0 :(得分:1)
无需选择任何内容。因为您使用合并的单元格,所以需要使用.MergeArea
,否则它只会为您提供未合并的行和列的高度和宽度。
Dim ws As Worksheet
Dim targetCell As Range
Dim picture1 As Picture
Set ws = ActiveSheet 'replace with actual worksheet if possible
Set targetCell = ws.Range("B10")
Set picture1 = ws.Pictures.Insert(fileName1)
With picture1
.Height = targetCell.MergeArea.Height 'set height first because width will change
.Top = targetCell.Top
.Left = targetCell.Left + (targetCell.MergeArea.Width - .Width) / 2
End With