ワークシートからデータを取得し、配列に入れて配列を他のワークシートに貼り付けようとしています。しかし、ループの後に私の配列空を返します。私はFor Loopから何かを返す必要がありますか?私は何の考えも見つけられませんでした。 Iアレイを貼り付けるときに、私はまた、間違った変数(初心者ミス)を使用J.をインクリメントするのを忘れデビッドG.により述べたよう配列をレンジに戻すにはどうすればいいですか?
Sub generate()
Dim article_arr() As Variant
Dim artCount As Integer
Dim filter As Integer
Dim RIL_itemCount As Integer
'Set PA number
filter = Sheet7.Range("B1").Value
RIL_itemCount = Sheet5.Cells(Sheet5.Rows.count, "A").End(xlUp).Row
'Count number article of PA selected
artCount = Application.WorksheetFunction.CountIf(Sheet5.Range("R:R"), filter)
'redim array
ReDim article_arr(0 To artCount)
Dim j As Integer
j = 0
'populate array with article number from Retail Item List
For i = 0 To RIL_itemCount
If (Sheet5.Cells(i + 2, 18).Value = filter) Then
article_arr(j) = Sheet5.Cells(i + 2, 1).Value
Debug.Print (article_arr(j))
End If
Next
'Paste Article number to range
Sheet7.Range("A8:A" & artCount) = articleArr()
End Sub
。これで結果が返されますが、貼り付けられた範囲で繰り返される配列の最初の値だけが返されます。範囲に配列を貼り付けるためにループが必要ですか?
明らかに配列がExcelに水平に貼り付けられ、配列を範囲に貼り付けるときに最初の値が繰り返されます。 WorksheetFunction.Transpose(array)
がここに魔法
を行う追加すると、更新されたコードされています
Sub generate()
Dim article_arr() As Variant
Dim artCount As Integer
Dim filter As Integer
Dim RIL_itemCount As Integer
'Set PA number
filter = Sheet7.Range("B1").Value
RIL_itemCount = Sheet5.Cells(Sheet5.Rows.count, "A").End(xlUp).Row
'Count number article of PA selected
artCount = Application.WorksheetFunction.CountIf(Sheet5.Range("R:R"), filter)
'redim array
ReDim article_arr(0 To artCount)
Dim j As Integer
j = 0
'populate array with article number from Retail Item List
For i = 0 To RIL_itemCount
If (Sheet5.Cells(i + 2, 18).Value = filter) Then
article_arr(j) = Sheet5.Cells(i + 2, 1).Value
j = j + 1
End If
Next
'Paste Article number to range
k = 8
Sheet7.Range("A" & k & ":A" & UBound(article_arr) + 7) = WorksheetFunction.Transpose(article_arr)
Debug.Print (article_arr(395))
End Sub
問題を再現できるように、いくつかのデータと出力の例を提供してください。 [最小、完全、および検証可能なサンプルを作成する方法](http://stackoverflow.com/help/mcve)のヘルプトピックをお読みください –
誤った変数を使用した場合は、コーディングしていないことを意味します'Option Explicit'です。あなたのコードの最上部に 'Option Explicit'を書くと、これらのことを警告します。 –
@RonRosenfeld入力いただきありがとうございます。私が見つけた解決策で質問を編集します。 – Windalfin