Вы не должны использовать глобальные переменные, если это возможно. Давайте приведем пример того, как вы можете это сделать:
Option Explicit
Sub Tabletoarray()
Dim prioritytbl As Variant
prioritytbl = Worksheets("Prod_met").ListObjects("prioritylist").DataBodyRange.Value
Call test(prioritytbl)
End Sub
Sub test(prioritytbl As Variant)
MsgBox (prioritytbl(2, 2))
End Sub
Сказал, что если вам нужно использовать глобальную переменную, вы не можете объявить ее снова в любой подпрограмме:
Option Explicit
Public prio_row_num
Public prioritytbl As Variant
Sub Tabletoarray()
' Dim prioritytbl As Variant this needs to be deleted
prioritytbl = Worksheets("Prod_met").ListObjects("prioritylist").DataBodyRange.Value
End Sub
Sub test()
MsgBox (prioritytbl(2, 2))
End Sub
Я бы также рекомендовал вам прочитать на , как избежать использования .select или .activate