返回列表 上一主題 發帖

[發問] 不同的sheet相同的動作,如何讓它一次性完成?

應該 n = sh.UsedRange.Rows.Count (使用中的總列數)不會取過大的範圍
妳可以用f8鍵逐句運行,看看運行到這一行時n的值是否工作表的最後一列。
若不是就須要把底下的空白全部選中按delete清除
也可以改一下這句試試:
n=sh.[d10000].end(3).row (D欄有資料的最後列)

TOP

本帖最後由 oobird 於 2012-5-10 11:22 編輯

妳沒有改到呀?我再整理一下:
Workbooks("2012 BCMart Chart.xlsx").Activate
   For s = 5 To 10 '從第某個工作表執行至第某個
   Sheets(s).Activate
   Set sh = ActiveSheet
   n = sh.[d10000].End(3).Row '(D欄有資料的最後列)這裡可以改成妳的資料中最齊的一欄
            sh.[aa5].Resize(n, 3) = sh.[aa5].Resize(n, 3).Value '把aa:ac變成值
            sh.AutoFilterMode = False     '取消自動篩選
            sh.[a4:ad4].AutoFilter    '建立自動篩
    Next    '下一個工作表

TOP

AA:AL在2010中是數千萬個儲存格,所以會拉格
我沒考慮妳是用2010,所以輕率的給妳這個語法。
妳用後來的 n = sh.[d10000].End(3).Row
            sh.[aa5].Resize(n, 3) = sh.[aa5].Resize(n, 3).Value
就不會拉格啦!

TOP

Sub Try_2()
   Workbooks("2012 BCMart Chart.xlsx").Activate
   Application.Calculation = xlCalculationManual
   For s = 5 To 10 '從第某個工作表執行至第某個
   Sheets(s).Activate
   Set sh = ActiveSheet
   n = sh.[al10000].End(3).Row '(AL欄有資料的最後列)這裡可以改成妳的資料中最齊的一欄
            sh.[aa5].Resize(n, 12) = sh.[aa5].Resize(n, 12).Value  '把公式結果變成值
            sh.AutoFilterMode = False     '取消自動篩選
            sh.[a4:ad4].AutoFilter    '建立自動篩
    Next    '下一個工作表
    Application.Calculation = xlCalculationManual
    ActiveWorkbook.Save

TOP

        靜思自在 : 得理要饒人,理直要氣和。
返回列表 上一主題