我正在尝试开发一个宏,在点击图片后,会对给定行中的一堆单元格进行v查找。
例如:
如果我点击第10行中的单元格,然后点击一张贵宾犬的图片(位于工作表中的某个位置,而不是第10行),第10行将在一个单元格中填充“animal” ,在下一个单元格“dog”中,在下一个单元格“poodle”中
然后我点击第11行的单元格,然后点击棕榈树的图片(位于表格中的某个位置),第11行将在一个单元格中填入“植物”,下一个单元格“树”,并在下一个单元格“棕榈树”
有什么想法吗? 谢谢!
答案 0 :(得分:3)
在您的工作表上放置一些图像,并在每个工作的Click事件中,使用图像中包含的项目名称调用LookupSelection子项:
Private Sub imgPalm_Click()
LookupSelection ("Palm Tree")
End Sub
Private Sub LookupSelection(name As String)
Dim lookupRange As Range
Set lookupRange = Sheet1.Range("I3:K5") 'Range for vlookup
Dim selectedRow As Integer
selectedRow = Selection.Row
Dim type1, type2 As String '
type1 = Application.WorksheetFunction.VLookup(name, lookupRange, 2)
type2 = Application.WorksheetFunction.VLookup(name, lookupRange, 3)
Sheet1.Cells(selectedRow, 1) = name
Sheet1.Cells(selectedRow, 2) = type1
Sheet1.Cells(selectedRow, 3) = type2
End Sub
你需要一个查找表(我用过I3:K5)。完成的东西应该是这样的:
祝你好运!
答案 1 :(得分:2)
在常规模块中创建一个宏来处理图片点击,并使用右键单击>>将其分配给所有图片的“onaction”属性。分配宏(或代码中)
Sub ImageClick()
Dim rngLookup As Range
Dim ImgName As String
ImgName = Application.Caller
Set rngLookup = ThisWorkbook.Sheets("Lookup").Range("A2:D20")
With Selection.Cells(1).EntireRow
.Cells(1).Value = ImgName
.Cells(2).Value = Application.VLookup(ImgName, rngLookup, 2, False)
.Cells(3).Value = Application.VLookup(ImgName, rngLookup, 3, False)
.Cells(4).Value = Application.VLookup(ImgName, rngLookup, 4, False)
End With
End Sub
正如Chris建议的那样,使用查找表来填充所选行中的值:在这种情况下,虽然它基于工作表上图像的名称。