You may try something like below.
I have declared the variables as variant and changed the WorksheetFunction with Application so that if lookup value is not found, the variables will hold the error number so that you can check whether the Match function returns a value or an error if required.
Dim ws As Worksheet
Dim Amount, Price, Time
On Error Resume Next
Set ws = Workbooks(wkbk_value).Sheets("Tab2")
On Error GoTo 0
If ws Is Nothing Then Set ws = Workbooks(wkbk_value).Sheets("Value")
With ws
Amount = Application.Match("Date", .Rows("5:5"), 0)
Price = Application.Match("Calculated", .Rows("4:4"), 0)
Time = Application.Match("Selected", .Rows("3:3"), 0)
End With
End Sub
Your edited code:
Dim ws As Worksheet
Dim Amount, Price, Time
On Error Resume Next
Set ws = Workbooks(wkbk_value).Sheets("Tab2")
Amount = Application.Match("Date", ws.Rows("5:5"), 0)
On Error GoTo 0
If ws Is Nothing Then
Set ws = Workbooks(wkbk_value).Sheets("Value")
Amount = Application.Match("Date", ws.Rows("5:5"), 0)
End If
Notice that in your code, you have two lines calculating the Amount where as if you focus to set the worksheet (ws) first, you will need to write that line only once and it will be calculated correctly based on worksheet set earlier as shown in the first code.