:VBAでは、配列を返す方法、または関数を使ってセルに書き込む方法は?この非常に簡単な関数の使用
Function WriteArray() as Variant
Dim array(0 To 2)
array(0) = "A"
array(1) = "B"
array(2) = "C"
WriteArray = array
End Function
を私は結果で私のExcelのスプレッドシートの配列全体を見て期待していたが、それはそうではないのです。私は最初の文字列を取得します。私は数式+ F2 + CTRL + SHIFT + ENTERでセルの範囲を選択することによってスプレッドシートに配列全体を表示するトリックがあることを知っていますが、VBAですべてを処理することをお勧めします。
また、 "Caller"の範囲に直接書き込むためにApplication.Caller変数を使用しようとしましたが、コードが壊れてしまいました。
ありがとうございました!
EDIT:
Function WriteArray() As Variant
Dim arr(0 To 2)
arr(0) = "A"
arr(1) = "B"
arr(2) = "C"
WriteArray = arr
Dim StartRow, i As Integer
For i = 0 To UBound(arr)
Range("A" & i).Value = arr(i)
Next
End Function
それはライン "範囲(" "& I).Valueの= ARR(I)" でどうぞ。 ここで私が使用しようとした別のコードがあります。私のExcelは壊れていますか?
これは実際には機能しませんが、VBAコードは "Range(" A "&i + StartRow).Value = MyArray(i)" ...でも問題になります。このコードはあなたのExcel上で動作しますか?私はExcel 2003を使用します。 –
Excel 2003では完全に機能しました。先頭のコードのすべての「配列」を、AbcListや並べ替えのような予約語ではない別の変数名に変更します。バリアント 薄暗いARR(0〜2) ARR(0)= "" ARRは、(1)= "B" 編曲したよう 機能のwriteArray(): – Eric
はまだ、それが壊れる...私は正確にこのコードを使用します(2)= "C" のwriteArray = ARR 薄暗いSTARTROW、I I = UBound関数を0(ARR) 範囲( "A" &I).Valueの= ARR(I) 次に エンド機能 に対する整数 として "Range(" A "&i).Value = arr(i)"では、エラーをスローせずにコードを終了します...私には意味がありません:( –