ByRef significa que você tem que passar uma referência para (o endereço de) um objeto existente como argumento, para que ele possa trabalhar com esse objeto real; vs. ByVal, o que significa que você passaria um valor, e esse valor seria copiado para o argumento de recebimento.
Assim, você não pode passar uma lista de valores como referência, você precisa criar um objeto Range que mantenha seus valores e, em seguida, passar o objeto (referência a ele) como esse argumento.
O problema aqui é que um objeto Range
no Excel é uma representação de um conjunto real de Células, mas acredito que o NamedRange permitirá que você crie programaticamente um objeto Range" virtual ", com células virtuais que contenham seus valores, mas eu nunca usei isso pessoalmente . :)
Acredito que esta questão no StackOverflow é (basicamente) a mesma que a sua e vale a pena conferir:
Microsoft Excel: crie programaticamente um intervalo nomeado oculto