标签:Excel技巧,VBA
之前的文章中介绍过这个技巧,这是在mcgimpsey.com中看到的,也辑录于此,供参考。
一图胜千言。在Excel中,可以在一个单元格中显示一张根据另一个单元格的信息而变化的图片。由于Excel中的图片不能放在单元格中,而是浮在工作表顶部,并且由于查找函数返回的是值,而不是图片,因此需要一些VBA代码来模拟查找图片并将其放置在单元格中。注意,对于大量图片(比如零件目录),数据库解决方案可能会更容易、更高效。
举个例子,假设一个由Bob、Ted、Carol和Alice组成的合伙企业希望在投标单上有主要合伙人的照片。在单元格A2的下拉列表中选择主要合作伙伴,图片将显示在单元格F1的顶部,如下图1所示。在另一张工作表上,一个名为PicTable的查找表将合作伙伴的名称与相应的图片名称相关联。
图1
图片放在工作表Sheet1的任何位置,在图片所在的单元格F1中,输入以下公式:
=VLOOKUP(A2, PicTable, 2, False)
然后,在该工作表Worksheet_Calculation事件用于将图片放置在单元格F1的顶部,从而隐藏公式。VBA代码隐藏所有图片,然后显示与F1中的值相对应的图片,必要时重新定位。
代码如下:
代码语言:javascript复制Private Sub Worksheet_Calculate()
Dim oPic As Picture
Me.Pictures.Visible = False
With Range("F1")
For Each oPic In Me.Pictures
If oPic.Name = .Text Then
oPic.Visible = True
oPic.Top = .Top
oPic.Left = .Left
Exit For
End If
Next oPic
End With
End Sub