標題:
[發問]
AUTOFILL-範圍太大
[打印本頁]
作者:
freeffly
時間:
2013-1-30 16:06
標題:
AUTOFILL-範圍太大
請問autofill會有範圍限制嗎
用下面的方式去跑會報錯說範圍太大
如果改成比較小的範圍就可以
還是我代碼有問題嗎?
Sub 配壓加_損耗片數()
T = Timer
Application.ScreenUpdating = False
r = Range("A65536").End(xlUp).Row - 4
Range("AF4").Resize(, 8) = Array("單張片數", "片數1", "單張片數", "片數2", "最大差異", "多耗張數", "比例", "生產月份")
With Range("AF5").Resize(, 8)
.NumberFormatLocal = "0.00_);[紅色](0.00)"
.FormulaR1C1 = Array( _
"=ROUNDDOWN(RC30/RC28,0)*ROUNDDOWN(RC31/RC29,0)", _
"=ROUNDDOWN(RC30/RC28,0)*ROUNDDOWN(RC31/RC29,0)*RC20", _
"=ROUNDDOWN(RC31/RC28,0)*ROUNDDOWN(RC30/RC29,0)", _
"=ROUNDDOWN(RC31/RC28,0)*ROUNDDOWN(RC30/RC29,0)*RC20", _
"=MAX(RC[-1],RC[-3])-RC[-24]", _
"=ROUND(RC[-1]/MIN(RC[-3],RC[-5]),2)", _
"=RC[-1]/RC20", _
"=IF(LEN(RC[-34])>9,YEAR(RC[-34])&TEXT(MONTH(RC[-34]),""00""),LEFT(RC[-34],3)+1911&RIGHT(LEFT(RC[-34],6),2))")
.AutoFill .Resize(5000, 8)
End With
With Columns("AM:AM")
.Copy
.PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False
' For C = 2 To Range("A65536").End(xlUp).Row
MsgBox Timer - T
End Sub
複製代碼
[attach]14112[/attach]
作者:
mark15jill
時間:
2013-1-30 16:57
本帖最後由 mark15jill 於 2013-1-30 16:59 編輯
回復
1#
freeffly
大大您的檔案會不會太大了點...4.57MB..
建議 將資料分流到其他活頁簿
避免一開檔案 就跑的跟烏龜一樣~(2GB 記憶體開您的檔案竟然會盪掉)...
另外
建議 檔案開起的設定不要用時間控制
作者:
freeffly
時間:
2013-1-30 17:10
回復
2#
mark15jill
會當掉喔?
這是系統轉出一個月資料
速度算還好
有時要處理30幾M的資料
用vba跑比人工快多了
作者:
stillfish00
時間:
2013-1-30 17:32
回復
3#
freeffly
Excel2010測試
跑完沒出現你說的錯誤~
作者:
freeffly
時間:
2013-1-31 09:41
回復
4#
stillfish00
我在想可能是我其他程序用掉記憶體
造成執行這各程序時會出問題
因為我另一個程序也有相同範圍
他執行時沒問題
輪到這各執行就有問題
謝謝大家測試
作者:
mark15jill
時間:
2013-1-31 14:57
本帖最後由 mark15jill 於 2013-1-31 15:03 編輯
另外
freeffly 大大
煩請檢查您的EXCEL 是否有 Startup 的巨集存在
我的被感染了
若確定為大大您的附檔有 該巨集病毒,小弟將會呈報予版主
作者:
HUNGCHILIN
時間:
2013-1-31 18:28
回復
6#
mark15jill
阿吉沒看到Startup
作者:
mark15jill
時間:
2013-2-1 08:21
回復
7#
HUNGCHILIN
兩位大大
之所以小弟提出此疑慮是因為 最近小弟都在琢磨VB2010 很少用到EXCEL
且上星期才電腦重灌 整個硬碟清洗過
在開起樓主大大的附檔前 確認過沒 Startup 之相關跡象
這也附合小弟在上幾層的文章內所說
一開始就有時間設定
導致2GB 記憶體的電腦也盪!~
如果確定沒有 那小弟在此跟樓主大大說聲
對不起 我誤會您了
作者:
freeffly
時間:
2013-2-1 10:05
回復
8#
mark15jill
小弟不寫病毒的
也沒那各功力
回復
7#
HUNGCHILIN
版主請問如果中那各病毒是會每各Excel都會有那各巨集嗎?
會擴散嗎
之前都不會去想網路上發問的問題會有病毒
不過有其他人提出就問一下
作者:
freeffly
時間:
2013-2-1 10:10
回復
7#
HUNGCHILIN
看到版主的另外一個帖提到
真是恐怖
再來好好研究版主這一帖
執行效果:
1.使用此檔 此檔會自動另存 "StartUp.xls"檔案到Application.StartupPath 路徑資料夾
2.新增檔案與開啟舊檔都會自動移植入此感染模組,若不注意你所有使用過的EXCEL檔案都會受感染
作者:
freeffly
時間:
2013-2-1 10:16
回復
7#
HUNGCHILIN
請問版主是不是這裡面沒有東西就沒中那各毒?
C:\Documents and Settings\freeffly\Application Data\Microsoft\Excel\XLSTART
作者:
mark15jill
時間:
2013-2-1 14:03
樓主大大誤會了
小弟在先前文章有提到
"煩請檢查您的EXCEL 是否有 Startup 的巨集存在
我的被感染了"
並不是說樓主大大編寫病毒
作者:
freeffly
時間:
2013-2-1 14:59
回復
12#
mark15jill
恩 看了阿吉版主的帖子
也發現在網路上抓檔很容易中標
作者:
Hsieh
時間:
2013-2-1 15:25
回復
1#
freeffly
這樣的下拉動作會受限於可用記憶體大小
用迴圈寫入公式來解決此問題
Range("AF4").Resize(, 8) = Array("單張片數", "片數1", "單張片數", "片數2", "最大差異", "多耗張數", "比例", "生產月份")
ar = Array( _
"=ROUNDDOWN(RC30/RC28,0)*ROUNDDOWN(RC31/RC29,0)", _
"=ROUNDDOWN(RC30/RC28,0)*ROUNDDOWN(RC31/RC29,0)*RC20", _
"=ROUNDDOWN(RC31/RC28,0)*ROUNDDOWN(RC30/RC29,0)", _
"=ROUNDDOWN(RC31/RC28,0)*ROUNDDOWN(RC30/RC29,0)*RC20", _
"=MAX(RC[-1],RC[-3])-RC[-24]", "=ROUND(RC[-1]/MIN(RC[-3],RC[-5]),2)", _
"=RC[-1]/RC20", _
"=IF(LEN(RC[-34])>9,YEAR(RC[-34])&TEXT(MONTH(RC[-34]),""00""),LEFT(RC[-34],3)+1911&RIGHT(LEFT(RC[-34],6),2))")
For i = 0 To 7
With Range("AF5").Offset(, i).Resize(5000, 1)
.NumberFormatLocal = "0.00_);[紅色](0.00)"
.FormulaR1C1 = ar(i)
End With
Next
作者:
freeffly
時間:
2013-2-1 15:44
回復
14#
Hsieh
對於超版的解決方式真是驚訝
沒想過這種處理方式
把那各5000筆改成動態一樣很快
學到一招
真是太興奮了
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)