vba - 如何在 vba 上将图像插入单元格?
问题描述
我正在处理这个 excel 宏,我一直在编写的代码(正如我所期望的那样糟糕)检查 G:G 范围内的每个单元格,并根据它的值插入一个图像。事实是我不确切知道如何将图像插入已检查的单元格中。我附上我写的代码......
Private Sub CommandButton1_Click()
Dim Cell As Range
For Each Cell In Range("G:G")
If Cell.Value = 1 Then
Call ActiveSheet.Shapes.AddPicture("S:\10_INGENIERÍA DE FUNDICIÓN\03_CALIDAD\Calidad central\Septiembre 2019\IMAGENES\C1.png", _
msoCTrue, msoCTrue, 0, 0, 25, 25)
ElseIf Cell.Value = 2 Then
Call ActiveSheet.Shapes.AddPicture("S:\10_INGENIERÍA DE FUNDICIÓN\03_CALIDAD\Calidad central\Septiembre 2019\IMAGENES\C2.png", _
msoCTrue, msoCTrue, 0, 0, 25, 25)
ElseIf Cell.Value = 3 Then
Call ActiveSheet.Shapes.AddPicture("S:\10_INGENIERÍA DE FUNDICIÓN\03_CALIDAD\Calidad central\Septiembre 2019\IMAGENES\C3.png", _
msoCTrue, msoCTrue, 0, 0, 25, 25)
ElseIf Cell.Value = 4 Then
Call ActiveSheet.Shapes.AddPicture("S:\10_INGENIERÍA DE FUNDICIÓN\03_CALIDAD\Calidad central\Septiembre 2019\IMAGENES\C4.png", _
msoCTrue, msoCTrue, 0, 0, 25, 25)
End If
Next
End Sub
当我单击命令按钮时,图像被插入到 A1 旁边,并且它们是一个重叠的。我希望它们位于检查值所在的单元格中,范围为 G:G。我一直在阅读它,并且一直在尝试许多不同的方法,但是由于我不擅长 vba(或任何其他语言),因此我完全迷失了并且有点绝望。
谢谢!
解决方案
您需要按如下方式设置 Left 和 Top 属性...
Call ActiveSheet.Shapes.AddPicture("S:\10_INGENIERÍA DE FUNDICIÓN\03_CALIDAD\Calidad central\Septiembre 2019\IMAGENES\C1.png", _
msoCTrue, msoCTrue, Cell.Left, Cell.Top, 25, 25)
但是,您的宏可以重写如下...
Private Sub CommandButton1_Click()
Dim PathToFolder As String
PathToFolder = "S:\10_INGENIERÍA DE FUNDICIÓN\03_CALIDAD\Calidad central\Septiembre 2019\IMAGENES\"
'Make sure path ends in backslash (\)
If Right(PathToFolder, 1) <> "\" Then
PathToFolder = PathToFolder & "\"
End If
Dim Cell As Range
Dim ImageFile As String
For Each Cell In Range("G1:G" & Cells(Rows.Count, "G").End(xlUp).Row) 'define range until last used row
If Len(Cell) > 0 Then 'cell contains a value
If Cell.Value = 1 Then
ImageFile = PathToFolder & "C1.png"
ElseIf Cell.Value = 2 Then
ImageFile = PathToFolder & "C2.png"
ElseIf Cell.Value = 3 Then
ImageFile = PathToFolder & "C3.png"
ElseIf Cell.Value = 4 Then
ImageFile = PathToFolder & "C4.png"
Else
ImageFile = ""
End If
If Len(ImageFile) > 0 Then 'variable contains a non-empty string
If Len(Dir(ImageFile, vbNormal)) > 0 Then 'image file exists
ActiveSheet.Shapes.AddPicture ImageFile, msoCTrue, msoCTrue, Cell.Left, Cell.Top, 25, 25
End If
End If
End If
Next Cell
End Sub
推荐阅读
- ios - 给定四边形的四个角位置,填充四边形之外的所有内容
- python - Azure 存储关闭自动解压
- android - 如何连续读取logcat并写入内部存储文件?
- python - 带有 tf 数据集输入的 TensorFlow keras
- javascript - Google 电子邮件脚本更改日期
- jquery - jQuery .closest() 在 AJAX 调用后不起作用?
- oracle - 在 toad 中,exact fetch 返回的行数超过了请求的行数
- git - 将主分支重置为功能分支
- c# - 获取从曲线覆盖的距离?
- postgresql - JPA EclipseLink:处理默认值