title: Excel VBA: Range to String Array in 1 step
body: <p>I know you can easily take a range of cells and slap them into a Variant Array but I want to work with a string array (because it's single-dimensional and takes less memory than a Variant array).</p>
  
  <p>Is there any way to automatically convert a range into a string array?</p>
  
  <p>Right now I am using a function that will take the range and save the values in a variant array, then convert the variant array to a string array. It works nice , but I'm looking for a way to go directly from the range to string array. Any help would be greatly appreciated.</p>
  
  <pre><code>Function RangeToArray(ByVal my_range As Range) As String()
  
  Dim vArray As Variant
  Dim sArray() As String
  Dim i As Long
  
  vArray = my_range.Value
  ReDim sArray(1 To UBound(vArray))
  
  For i = 1 To UBound(vArray)
      sArray(i) = vArray(i, 1)
  Next
  
  RangeToArray = sArray()
  
  End Function 
  </code></pre>
  
  <p>UPDATE:
  It's looking like there is no way to skip the step of throwing the data into a variable array first before converting it to a single-dimensional string array. A shame if it's true (even if it doesn't take much effort, I like to ultra-optimize so I was hoping there was a way to skip that step). I'll close the question in a few days if no solution presents itself. Thanks for the helpful comments, guys!</p>
  
  <p>UPDATE2:
  Answer goes to Simon who put in great effort (so did everyone else) and utlimately pointed out it's indeed impossible to go from range to string array in one shot. Thanks, everyone.</p>