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

时间:2016-10-10 09:50:11

标签: excel vba excel-vba 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

1 个答案:

答案 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