我一直得到
.find行上的"下标超出范围"
错误。
这个想法是用户根据输入框选择一个单元格。然后将复制所选单元格行中的单元格(D)的值,并用于在给定范围内查找Sheet2中的值。
Sub AddNewLine()
Dim Hull As Variant
Dim SST As Variant
Dim NRE_RE As Variant
Dim DropDownN As Range
Dim DropDownR As Range
Dim foundcell As Variant
Dim myCell As Range
Dim Task As Range
Dim WBS As Range
Set DropDownN = Sheets("Sheet2").Range("C3:C6")
Set DropDownR = Sheets("Sheet2").Range("C10:C64")
Sheets("Sheet1").Activate
Set myCell = Application.InputBox(prompt:="Select a Hull to add the task to
the 7300", Type:=8)
Set Task = myCell.EntireRow
Task.Select
NRE_RE = Task.Cells(4).Value
Hull = Task.Cells(3).Value
SST = Task.Cells(6).Value
If NRE_RE = "NRE" Then
Sheets("Sheet2").Activate
With DropDownN
.Find(What:=SST, LookIn:=xlValue, LookAt:=xlWhole, MatchCase:=True)
End With
ElseIf NRE_RE = "RE" Then
Sheets("Sheet2").Activate
With DropDownR
.Find(What:=SST, LookIn:=xlValue, LookAt:=xlWhole, MatchCase:=True)
End With
End If
Sheets("Sheet2").Activate
WBS.Interior.ColorIndex = 3
End Sub
我是编码的新手,并且已经找到了一种让它适用于我的情况而没有运气的方法。我也试图将搜索结果命名为" WBS"这就是" WBS.Interior.ColorIndex = 3"正在引用。
我也意识到我的代码可能不是最简洁的,但随着我的理解会有所改变。这只是我脑海中最简单的过程。
感谢您的帮助!
答案 0 :(得分:2)
您需要更换行:
.Find(What:=SST, LookIn:=xlValue, LookAt:=xlWhole, MatchCase:=True)
使用Find
函数的正确方法,包括以下内容:
将Find
的结果设置为Range
对象。
Dim FindRng As Range
Set FindRng = .Find(What:=SST, LookIn:=xlValue, LookAt:=xlWhole, MatchCase:=True)
同时处理Find
无法找到您要找的内容的情况,第一种情况是SST
。
If FindRng Is Nothing Then
Find
的修改后的代码 :
Dim FindRng As Range
Set FindRng = .Find(What:=SST, LookIn:=xlValue, LookAt:=xlWhole, MatchCase:=True)
If Not FindRng Is Nothing Then
' when Find is successfull finding SST
Else
' if Find faild finding SST
End If
注意:您应该避免使用Sheets("Sheet1").Activate
和Task.Select
,它唯一要做的就是减慢代码的运行时间。