PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
Office
[算表] VBA用字典暫存值但無法完全取回
作者:
Kamikiri
(☒☒)
2019-09-19 15:02:33
軟體:OFFICE 365 EXCEL
版本:1908
程序如下
Dim dic, arr1, arr2
Set dic = CreateObject("Scripting.Dictionary") '建立字典
arr1 = Range(Cells(5, 1), Cells(20000, 1))
arr2 = Range(Cells(5, 7), Cells(20000, 36))
(其他程序中略,計算結果放在A5:A20000)
dic(arr1) = arr1 '將A5:A20000存入字典
(其他程序中略,計算結果放在G5:G20000)
dic(arr2) = arr2 '將計算結果G5:AJ20000存入字典
Cells(5, 1).Resize(UBound(arr1)) = arr1
'將存入字典的A5:A20000貼回原工作表的A5
Cells(5, 7).Resize(UBound(arr2)) = arr2
'將存入字典的G5:AJ20000貼回原工作表的G5
dic.RemoveAll '移除字典
這麼做的目的是因為計算時會需要先取代某些字串
但希望計算完之後能恢復成原來的字串
目前運作起來arr1是正常的,但arr2在放回G5時
卻都只有成功取回第1欄=G欄,G欄之後的值都沒有被正常取回工作表
稍微思考了一下,應該是我誤會了dic的用法
是因為dic只能保存key跟item所以不能超過2欄嗎?
如果我需要這種將值暫存在另一個Table的效果
需要用哪一個功能才有辦法達成呢?
有想過要改用VBA自動把值轉到隱藏工作表,等計算完再複製回去
但不知道為啥,從隱藏工作表複製20000列回原位置會跳error 1004
寫法如下
來源工作表.range(cells(5,1),cells(20000,1)).copy 目標工作表
作者:
newacc
(XD)
2019-09-19 15:14:00
因為你Resize後只有涵蓋到G欄?
http://bit.ly/2mhfsfU
試試看把Resize的兩個參數都填上,UBound使用方式如連結不過是說,你現在貼的code,貼回原工作表的這個動作並沒有用到字典,是直接從記憶體裡叫arr出來,是否是被節錄掉了?
作者:
Kamikiri
(☒☒)
2019-09-23 18:20:00
原來從字典取出要打完全的位址....我以為只需要打第一格看來是我誤會了 我以為Resize前的位址是貼上的位址但看來應該不是 而是取出的位置吧?總之改成cells後已經解決了 可以成功取出
繼續閱讀
[問題] inderect函數請敎
cara5659
[文件] excel 樞紐分析表
HILLFLY
[問題] Excel VLOOKUP抓其他資料表值
SCSAWei
Re: [算表] VBA上顏色請益
johnny1215
[算表] VBA上顏色請益
johnny1215
[文件] 兩個文字方塊間的箭頭 有ㄇ字型的嗎?
poeta
[算表] 多工作表篩選後複製到一個工作表vba
ptguitar
[文件] WORD多行貼入EXCEL
belast
[問題] 如何找尋已刪除word檔之原先路徑
f29225300
[算表] 搜尋複數欄位儲存格後去帶入相應資料
testes
Links
booklink
Contact Us: admin [ a t ] ucptt.com