Board logo

標題: [發問] [發問]如何將一個陣列分成兩段輸出呢 [打印本頁]

作者: yurckr    時間: 2010-10-21 13:10     標題: [發問]如何將一個陣列分成兩段輸出呢

請問 我想把一個陣列 分別放在兩個範圍 這樣的寫法 確讓兩個範圍的資料都是一樣的 請問怎麼寫才是對的呢

想把 nameitem(31,1)  到 nameitem(60,9) 得資料放到 Range("M7:U36")

Dim nameitem(60, 9) As Variant

For i = 1 To 60: For j = 1 To 9

nameitem(i, j) = Cells(i + 6, j + 25)

If i = 31 And j = 1 Then

Set myrange_a = Sheets(ftworklcal).Range("M7:U36")

Sheets(ftworklcal).Range("m7:u36").Value = nameitem

Else

Set myrange_a = Sheets(ftworklcal).Range("B7:J36")

Sheets(ftworklcal).Range("B7:J36").Value = nameitem

End If

Next j

Next i

Set myrange_a = Nothing

End Function

請指教 謝謝
作者: oobird    時間: 2010-10-21 14:09

1.陣列不須要循環賦值,直接nameitem=[z7:ag66]即可
2.寫入儲存格的動作要在循環外。
作者: GBKEE    時間: 2010-10-21 14:30

本帖最後由 GBKEE 於 2010-10-21 14:31 編輯

回復 1# yurckr
  1. Sub Ex()
  2. Dim MyRange_a As Range, nameitem(1 To 60, 1 To 9), i%, j%
  3. For i = 1 To 60
  4.     For j = 1 To 9
  5.         nameitem(i, j) = Cells(i + 6, j + 25)
  6.     Next
  7. Next
  8. Set MyRange_a = Sheets(ftworklcal).Range("B7:J36")
  9. For i = 1 To MyRange_a.Rows.Count
  10.    MyRange_a.Rows(i) = Application.Index(nameitem, i)
  11. Next
  12. Set MyRange_a = Sheets(ftworklcal).Range("M7:U36")
  13. For i = 1 To MyRange_a.Rows.Count
  14.    MyRange_a.Rows(i) = Application.Index(nameitem, i + 30)
  15. Next
  16. End Sub
複製代碼

作者: yurckr    時間: 2010-10-21 14:50

GBKEE兄 太感謝你了,完全符合我要的結果

Application.Index 這個關鍵的用法我又學了一招

也感謝 oobird 的指教




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)