VBA 合并单元格中的中心图片

VBA Center picture in merged cells

一段时间以来,我一直在努力解决这个问题。以下代码将您选择的图片插入到我的 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

不需要select任何东西。因为您使用合并的单元格,所以您需要使用 .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