f10629 wrote:改寫一下7樓這段程式.C = [C5:C12]For Each i In CSheets(i).[E5:E12] = CNext..(恕刪) 雖然概念似乎可行,但,愚鈍的我無法把這段程式碼成功執行。有宣告資料型態dim i as variantdim C as variant並且有改為range("..:..")請賜教,謝謝!
(VBA很多時候其實可以不用宣告變數型態,預設視為variant)我這邊是看你上面的東西去改寫的你在"執行程式的分頁"應該會先在C5~C12的儲存格"先設定其他分頁名"吧是不是測試時這邊沒設定 或是 分頁名不符或不存在?C = [C5:C12]安全起見,這行可以再指定Sheet,如下C = Sheets(1).[C5:C12] '指定第一個分頁(順序)或C = Sheets("工作表1").[C5:C12] '指定"工作表1"分頁(名稱)或C = [工作表1!C5:C12] '同上原本不指定的寫法預設為當下顯示的頁面即如下C = ActiveSheet.[C5:C12]
f10629 wrote:(VBA很多時候其實...(恕刪) Sheets(i).[E5:E12] = C <-------顯示陣列索引超出範圍---------------------------------------------------------------------------i ,不用給值嗎?
i 在前一行,用作For迴圈的變數迴圈會輪流給他C裡面各成員的值For Each i In C下面的Next為Next i的簡寫即進入迴圈的下一圈迴圈還有很多寫法可以Google一下 "VBA 迴圈"https://blog.gtwang.org/programming/excel-vba-programming-loop/C = [C5:C12]For Each i In CSheets(i).[E5:E12] = CNext以此為例,以下再提供兩種For迴圈寫法(應該說是Range/Cells的其他寫法)C = [C5:C12]For i = 5 To 12Sheets(Range("C" & i).Value).[E5:E12] = CNextC = [C5:C12]For i = 5 To 12Sheets(Cells(i, 3).Value).[E5:E12] = CNext