如果找不到值,则显示消息框

时间:2018-09-11 11:40:10

标签: excel vba

一个了不起的用户已经帮助我开发了一个代码,以便在工作表“需求”列B中查找该值,该值是用户已在工作表“ Home” G11(参考编号)中输入的值,然后输入当前日期和时间到表格“ Reqs”中的单元格中,从找到的值开始沿着21列前进。

现在,我想同时修改代码

a)将表格“ Home” G12中的值输入到表格“ Reqs”中与刚刚输入日期相邻的单元格中(沿着同一行的一列)。

和 b)如果找不到输入的参考编号,请显示一个消息框(在“首页”中),显示“找不到编号”

对于b)我试图简单地添加一个“ Else:msgbox“未找到编号”,但这会出现错误“ Else if if”,但是我已经有了一个If ...

非常感谢

Sub CloseJob()
    Dim temp As Range
    Set temp = 
Sheets("Reqs").Columns("B").Find(What:=Sheets("Home").Range("G11").Value, _
                       LookIn:=xlFormulas, LookAt:=xlWhole, _
                       SearchOrder:=xlByRows, _
                       SearchDirection:=xlNext, MatchCase:=True)
    'if found
    If Not temp Is Nothing Then temp.Offset(0, 21) = Date

此后还有其他操作,但是它们可以正常工作

2 个答案:

答案 0 :(得分:0)

我不完全确定确切的错误或看到您尝试的错误,但这可能归结为语法格式。

尝试一下:

If Not temp Is Nothing Then 
    temp.Offset(0, 21) = Date
Else
    MsgBox("Number Not Found")
End If

如果您仍然有错误,请告诉我们错误是什么,我们可以从那里继续

对于第一个问题,请尝试以下操作:

Sub Test()
Worksheets("Home").Cells(12, 7).Copy

'You mentioned 21 columns along from the FoundValue, so I added a variable to the column argument of the cells function
'that you can change as needed

Worksheets("Reqs").Cells(12, FoundValue + 21).Paste

End Sub

请记住,Cells函数接受Rows,Columns的参数-因此,请确保我编写的内容与所需内容一致。始终先尝试测试数据!

答案 1 :(得分:0)

您需要在代码中的Then之后将其分开,当前它正在结束IF语句,这不是您想要的。

将您的代码设置为以下格式,看看是否可行。

If Not temp Is Nothing Then 
  temp.Offset(0, 21) = Date
  temp.Offset(0, 22) = Sheets("Home").range("G12").value 

Else
...
End If