The Answer submitted by @Storax is the basis for the following code, which defines function rangeToArray that will take a Range object and return an equivalent array:
Function rangeToArray(rg As Range)
  If rg.Count = 1 Then
    rangeToArray = Array(rg(1))
  Else
    rangeToArray = WorksheetFunction.Transpose(rg)
  End If
End Function
It can be used like so:
Sub test()
  Dim lastRowInA As Long, i As Integer
  Dim a()
  lastRowInA = WorksheetFunction.CountA(Range("A:A"))
  
  a = rangeToArray(Range("A1:A" & lastRowInA))
  For i = 1 To lastRowInA
    Debug.Print a(i)
  Next
End Sub
The if inside rangeToArray is necessary only if rg could consist of a single cell.
Also, if A has no populated rows, an error will result when using lastRowInA, which will be 0, to define the range being passed torangeToArray.
The single line from Storax, shown below and adapted in the Else in function rangeToArray, is a brilliant, simple key to solution.
vDat = WorksheetFunction.Transpose((rg))