I don't recall those functions exhibiting this problem.
But I tried this:
Option Explicit
Sub testme()
Dim myArr As Variant
Dim res As Variant
With ActiveSheet.Range("a1:b65536")
.Formula = "=row()"
.Value = .Value
res = Application.Index(.Range("a:a"), 65500)
Debug.Print "---.index---"
If IsError(res) Then
Debug.Print CStr(res)
Else
Debug.Print res
End If
res = Application.VLookup(65500, .Range("a:b"), 2, False)
Debug.Print "---.vlookup---"
If IsError(res) Then
Debug.Print CStr(res)
Else
Debug.Print res
End If
res = Application.Match(65500, .Range("a:a"), 0)
Debug.Print "---.match---"
If IsError(res) Then
Debug.Print CStr(res)
Else
Debug.Print res
End If
End With
End Sub
and got this:
---.index---
65500
---.vlookup---
65500
---.match---
65500
And using the array:
Option Explicit
Sub testme()
Dim myArr As Variant
Dim res As Variant
With ActiveSheet.Range("a1:b65536")
.Formula = "=row()"
.Value = .Value
myArr = .Value
End With
With Application
res = .Match(65500, .Index(myArr, 0, 1), 0)
Debug.Print "---.match & .index---"
If IsError(res) Then
Debug.Print CStr(res)
Else
Debug.Print res
End If
End With
End Sub
I got:
---.match & .index---
65500
=========
Did I get close to what you were looking for?
If no, if you have some code, I can paste it in and test it out.