宏用于将多个单元格上的vlookup与图像点击相关联

时间:2011-07-05 16:36:56

标签: excel vba

我正在尝试开发一个宏,在点击图片后,会对给定行中的一堆单元格进行v查找。

例如:

  • 如果我点击第10行中的单元格,然后点击一张贵宾犬的图片(位于工作表中的某个位置,而不是第10行),第10行将在一个单元格中填充“animal” ,在下一个单元格“dog”中,在下一个单元格“poodle”中

  • 然后我点击第11行的单元格,然后点击棕榈树的图片(位于表格中的某个位置),第11行将在一个单元格中填入“植物”,下一个单元格“树”,并在下一个单元格“棕榈树”

有什么想法吗? 谢谢!

2 个答案:

答案 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)。完成的东西应该是这样的:

Poodlelol

祝你好运!

答案 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建议的那样,使用查找表来填充所选行中的值:在这种情况下,虽然它基于工作表上图像的名称。