VBAでもCollectionとClassを活用すれば全部ByValでいけないことはない
旧時代言語のVBAだとその辺はまだあまり洗練されてないから現実的にはByRefを使わざるを得ないけど