以下はうまく機能します(このコミュニティによる親切な支援に感謝します!)
Function RangeToArrayToRange(inputRange as Range) As Variant
Dim inputArray As Variant
inputArray = inputRange
RangeToArrayToRange = inputArray
End Function
この関数は、入力範囲を出力に完全にコピーします。ただし、inputArray でいくつかの操作を行うと、配列は完璧に見えますが、Excel では、配列の最初の値のみがすべてのセルに出力されます。この例では、いくつかの入力文字列から数値を解析しています。
入力範囲:
ABC=1X:2Y
ABCD=10X:20Y
ABCDE=100X:200Y
コード:
Function RangeToArrayToRange(inputRange As Range) As Variant
Dim inputHeight As Integer
inputHeight = inputRange.Count
Dim inputArray As Variant
inputArray = inputRange
Dim strippedArray() As Variant
ReDim strippedArray(1 To inputHeight)
Dim currentInput As String
Dim currentInputAsInt As Integer
Dim i As Integer
For i = 1 To inputHeight
currentInput = inputArray(i, 1)
currentInput = Right(currentInput, (Len(currentInput) - Application.WorksheetFunction.Find("=", currentInput)))
'splits out everything left of the "="
currentInput = Right(currentInput, (Len(currentInput) - Application.WorksheetFunction.Find(":", currentInput)))
'splits out everything to the right of the ":"
currentInput = Left(currentInput, Len(currentInput) - 1)
'split out the letter to allow int casting
currentInputAsInt = CInt(currentInput)
'cast to int
strippedArray(i) = currentInputAsInt
'saved
Next i
RangeToArrayToRange = strippedArray
End Function
期待される出力:
1
10
100
実際の出力:
1
1
1
デバッガーを実行すると、strippedArray にはそれぞれ strippedArray(1)/(2)/(3) の位置に Variant/Integer 値 1、10、100 が含まれます。問題は、私が知る限り、配列が Excel に入力する範囲に strippedArray(1) しか含まれていないことです。
ありがとうございました!