我一直收到
“下标超出范围”
错误在这.find行.
其思想是用户根据输入框选择一个单元格,然后复制所选单元格所在行中单元格(D)的值,并用于在给定范围内查找Sheet 2中的值。
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”所引用的。
我也意识到我的代码可能不是最简洁的,但随着我对代码的理解加深,这种情况会有所改变。在我看来,这是最简单的过程。
谢谢你的帮助!
2条答案
按热度按时间y53ybaqx1#
您需要更换管路:
正确使用
Find
函数的方法,包括以下内容:1.将
Find
的结果设置为Range
对象。Dim FindRng As Range Set FindRng = .Find(What:=SST, LookIn:=xlValue, LookAt:=xlWhole, MatchCase:=True)
1.还要处理
Find
无法找到您要查找的内容的情况,在第一种情况下,它是SST
。If FindRng Is Nothing Then
第一个
Find
的修改代码:注意:您应该避免使用
Sheets("Sheet1").Activate
和Task.Select
,它们唯一会做的事情就是降低代码的运行时速度。pepwfjgg2#
它是Xl值,s没有Xl值