返回列表 上一主題 發帖

這個問題頭大了..想了好久

本帖最後由 lpk187 於 2015-8-22 14:18 編輯

回復 5# EGBT

當你作用中的工作表為Sheets("學生頁")時,你是可以寫
Sheets("學生頁").Range(Cells(2, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1))
但是如果作用中的工作表不是Sheets("學生頁")時,那這句正確寫法
Sheets("學生頁").Range(Sheets("學生頁").Cells(2, 1), Sheets("學生頁").Cells(Sheets("學生頁").Cells(Rows.Count, 1).End(xlUp).Row, 1))
看出哪裡不同了嗎?
每一個儲存格應該給予完整的地址

TOP

回復 8# EGBT


     動態陣列 Redim Student(x)這樣寫時,當重新一次的Redim時會把原來在陣列的值清空
所以當然沒值給它顯示啊迴圈中的重新定維數又不希望清空值必須寫成
ReDim Preserve Student(x)

TOP

回復 8# EGBT


    一般使用陣列不應該Sheets("統計").Cells(x, 1) = Student(x)這樣子寫
這樣寫只是浪費了陣列執行速度的優點
最好是迴圈跑完後再貼到儲存格
如下
  1. Sub TEST1()
  2. Dim Student()
  3. x = 0
  4. With Sheets("學生頁")
  5.     For Each y In .Range(.Cells(2, 1), .Cells(.Cells(Rows.Count, 1).End(xlUp).Row, 1))
  6.         ReDim Preserve Student(x)
  7.         Student(x) = y
  8.         x = x + 1
  9.     Next
  10. End With
  11. Sheets("統計").Cells(1, 1).Resize(UBound(Student) + 1) = Application.Transpose(Student)
  12. End Sub
複製代碼

TOP

        靜思自在 : 稻穗結得越飽滿,越會往下垂,一個人越有成就,就要越有謙沖的胸襟。
返回列表 上一主題