I think that it would be a better form to pass two ranges into the function of the creation dictionary. This allows ranges to be completely separate, even different books. It also allows you to map a 1D range to a 2D range, as shown below.
Alternatively, you can also pass two arrays of range values. This may be cleaner for 1D ranges, but will result in more code for two-dimensional display. Note that the elements of the range can be looped by index from left to right from top to bottom. You can use Application.Transpose(Range("A1:A5")) to effectively run from top to bottom from left to right.
Cell mapping
Sub Test() RangeToDict Sheets(1).Range("A1:A5"), Sheets(2).Range("C1:E2") End Sub Function RangeToDict(ByVal KeyRng As Range, ByVal ValRng As Range) As Dictionary Set RangeToDict = New Dictionary For Each r In KeyRng vi = vi + 1 'It may not be advisable to handle empty key values this way 'The handling of empty values and

Side-by-side (as a range)
If your target range is near two columns, you can simplify the transfer of one range, as shown below. Therefore, this also works to display any other element in the 1-dimensional range.
Sub Test() RangeToDict2 Range("A1:B5") End Sub Function RangeToDict2(ByVal R As Range) As Dictionary Set RangeToDict2 = New Dictionary i = 1 Do Until i >= (R.Rows.Count * R.Columns.Count) RangeToDict2.Add R(i), R(i + 1) Debug.Print R(i) & ", " & R(i + 1) i = i + 2 Loop End Function

Two columns (as an array)
Finally, as an example of passing arrays as arguments, you can do something like the following. However, the following code will only work with a specific OP script to map two columns. As with the case, it will not process display strings or variable elements.
Sub Test() Dim Keys() As Variant: Keys = Range("E1:I1").Value2 Dim Values() As Variant: Values = Range("E3:I3").Value2 RangeToDict Keys, Values End Sub Function RangeToDict(Keys() As Variant, Values() As Variant) As Dictionary Set RangeToDict = New Dictionary For i = 1 To UBound(Keys) RangeToDict.Add Keys(i, 1), Values(i, 1) Debug.Print Keys(i, 1) & ", " & Values(i, 1) Next End Function
Using name ranges
It may be convenient to use named ranges, in which case you can pass a range, since the argument likes this ...
Sub Test() RangeToDict Names("Keys").RefersToRange, Names("Values").RefersToRange End Sub