excel 通过用户窗体用VBA查找单元地址

ghg1uchk  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(107)

好吧,这是我十多年来第一次摆弄VBA,也是第一次尝试将其应用于Excel。
我有一个范围“C7:G19”我在我的用户表单上有一系列标签,名为Label9到Label14。每个标签都有一个Tag,对应于我的范围的第一列中的值(“C7:G19”)。
现在,我需要做的是装配它,以便当我单击命令按钮时,代码将在第5列(“G”)中找到单元格的地址,该列包含一个值,该值与从我上面提到的标签的Tag值中获得的搜索关键字相匹配。
现在,我有两个电子表格函数,做的正是我想让他们,问题是我不能为我的生活弄清楚如何获得VBA代码等效没有得到一个运行时错误
下面是电子表格函数:

=ADDRESS(ROW(INDEX(C7:G19,MATCH(“hard coded value”, C7:C19,0),1)),7)
=CELL(“address”,INDEX(C7:C19,MATCH(“hard coded value”,C7:C19,0),5))

这两个函数都返回正确的单元格地址。
下面是我目前为止的代码

For n = 9 to 14
search_key = user_form(“Label” & n).Tag
data_address = Application.WorksheetFunction.ADDRESS(ROW(INDEX(Range(“C7”,”G19), MATCH(search_key, Range(“C7”, “C19”), 0), 1)),7)
MsgBox = data_address
Next n

编辑:我跳过了一个错误。上面返回了一个错误,告诉我MATCH函数没有定义,所以我返回并将Application.WorksheetFunction添加到公式的每个部分,这就是我得到运行时错误的地方
这将统一返回“运行时错误'438':对象或方法不正确地支持此方法”,我不完全确定这里需要做什么。我可以硬编码的细胞地址,他们不会改变,但我宁愿不。

wd2eg0qa

wd2eg0qa1#

现在,忘记循环,只尝试一行代码。
只有这一行:

Application.WorksheetFunction.ADDRESS(ROW(INDEX(Range(“C7”,”G19), MATCH(search_key, Range(“C7”, “C19”), 0), 1)),7)

你有很多错误。对于单元格G19的引用,缺少双引号。我不知道Range(“C7”,“G19”)的错误消息是什么。
试着只将代码的一小部分放在新过程中来测试一些东西,比如:

Sub Test()
     MsgBox Range(“C7”,”G19”)
End Sub

Sub Test()  
     search_key = user_form(“Label9).Tag
     MsgBox search_key
     MsgBox MATCH(search_key, "Your range", 0), 1)
End Sub

在你的指导下:

MsgBox = data_address

您肯定会收到错误消息。

相关问题