我正在尝试制作一个动态按钮,根据仪表板页面上单元格D15中列出的部门,将用户带到正确的位置以输入数据。我知道As String不需要Set命令,但我不确定我做错了什么?
Sub GPS1()
Dim Dashboard As Worksheet
Set Dashboard = ThisWorkbook.Worksheets("Dashboard")
Dim Func1 As String
'Set does not belong here Func1 = Dashboard.Range("D15")
Dim OpenJobsCalculations As Worksheet
Set OpenJobsCalculations = ThisWorkbook.Worksheets("Open Jobs Calculations")
OpenJobsCalculations.Range("B:B").Find(Func1).Select
End Sub
答案 0 :(得分:2)
您不需要这些 @MyRest(path = @Path("/XYZ"))
public RestServiceResponse getXYZ(String jsonRequest)
对象引用。选择"仪表板" Project Explorer (Ctrl + R)中的工作表,然后点击 F4 以显示其属性,并设置其Worksheet
属性有意义的事情,比如(name)
。
这个"代码名称"然后可以在代码中的任何地方使用它来引用代表该工作表的(free!)全局范围的对象变量,如下所示:
DashboardSheet
同样的"开放职位计算" sheet - 将其MsgBox DashboardSheet.Range("A1").Value
属性设置为(name)
,然后您可以执行此操作:
OpenJobsCalcSheet
请注意Dim result As Range
Set result = OpenJobsCalcSheet.Range("B:B").Find("SomeStringValue")
If result Is Not Nothing Then result.Select
调用的结果如何Find
- 在Nothing
上调用.Select
会抛出运行时错误91"对象引用或使用块变量未设置",因此您需要首先检查返回的Nothing
对象是否为Range
。
现在,Nothing
是您已注释掉的字符串变量,因此完整代码为:
"SomeStringValue"
答案 1 :(得分:2)
我喜欢将匹配功能用于单列搜索。根据{{3}}页面,对于单列查找,它比Find()稍快一些:
Sub GPS1()
Dim Dashboard As Worksheet
Set Dashboard = ThisWorkbook.Worksheets("Dashboard")
Dim Func1 As String
Func1 = Dashboard.Range("D15").Value
Dim OpenJobsCalculations As Worksheet
Set OpenJobsCalculations = ThisWorkbook.Worksheets("Open Jobs Calculations")
Dim mtch
'find match
mtch = Application.Match(Func1, OpenJobsCalculations.Range("B:B"),0)
'If no match was found mtch will be an error.
'we now test whether it is an error or not.
If IsError(mtch) Then
MsgBox "No Match Found"
Else
OpenJobsCalculations.Range("B" & mtch).Select
End If
End Sub
答案 2 :(得分:2)
您无法在非活动工作表上选择单元格。使用:
Set OpenJobsCalculations = ThisWorkbook.Worksheets("Open Jobs Calculations")
OpenJobsCalculations.Select
答案 3 :(得分:0)
Dashboard.Range("D15")
是一个范围,但我认为你需要该单元格中的值...你需要使用.Value
对象的Range
属性指定它。
Func1 = Dashboard.Range("D15").Value
希望这有帮助!