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