Board logo

標題: [發問] 有關於迴圈sheets [打印本頁]

作者: a703130    時間: 2011-5-3 18:49     標題: 有關於迴圈sheets

請教各位大佬,我開了很多sheets,各有其名稱,從每一個sheets各複製固定的儲存格到第一個sheet,所以我想到用迴圈
不過卻遇到問題:[attach]5952[/attach]
下列是我的程式碼,請問是哪邊出問題,或是有其他更好的方法可以完成這程式??
請各位大佬不吝賜教~謝謝~

    Private Sub CommandButton1_Click()
    Dim a As Integer
    For a = 2 To 5
        Sheets(a).Select
        Range(Cells(3, 2), Cells(5, 11)).Select
        Selection.Copy
        Sheets(1).Select
        Range(Cells(3, 2), Cells(5, 11)).Select
        ActiveSheet.Paste
    Next
    End Sub
作者: a703130    時間: 2011-5-3 18:51

補充一下~當然我是想要從第二個sheet開始將其資料依序貼到sheet1
因為在一開始要從sheet2的資料複製到sheet1就有問題

所以接下來的code並沒有修改
作者: a703130    時間: 2011-5-3 19:00

各位大大

上個廁所後..我就已經發現問題點了...
因為我上面的程式碼是寫在Microsoft Excel 物件的 sheet1 裡面
當我將程式碼放在模組內就可以正常work

但是我仍不明白為何要多一個步驟??
希望各位大佬能幫忙解答,謝謝
作者: Hsieh    時間: 2011-5-3 19:05

回復 2# a703130
不知道有沒有會錯意
  1. Private Sub CommandButton1_Click()
  2.     Dim a As Integer
  3.     For a = 2 To 5
  4.         With Sheets(a)
  5.         .Range(.Cells(3, 2), .Cells(5, 11)).Copy Sheets(1).Cells(3 + (a - 2) * 3, 2)
  6.         End With
  7.     Next
  8. End Sub
複製代碼

作者: GBKEE    時間: 2011-5-3 20:01

回復 3# a703130
你的程序在是sheet1物件模組
當Sheets(a).Select 後
執行Range(Cells(3, 2), Cells(5, 11)).Select
這裡的Range(Cells(3, 2), Cells(5, 11))是指sheet1工作表的範圍當然會出錯

你將程序移到一般模組 Range與Cells 是指作用中的工作表Sheets(a)範圍 所以不會有錯誤
Sheet1物件模組 如上樓 Hsieh            With Sheets(a)
                                     . Range(.Cells(3, 2), .Cells(5, 11)).....
               就是明那一工作表的範圍不易出錯
作者: a703130    時間: 2011-5-4 10:04

我了解意思了

Range(Cells(3, 2), Cells(5, 11)).Select
只是單純再sheet1裡面所選擇的
但是我的迴圈卻指定到了sheet(a)
難怪執行會有問題,也謝謝 Hsieh 大幫忙




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