[問題] vba copy 改成 =

看板Office作者 (給開司一罐蘇格登)時間9年前 (2016/10/09 09:11), 9年前編輯推噓0(0021)
留言21則, 2人參與, 最新討論串1/1
(若是和其他不同軟體互動之問題 請記得一併填寫) 軟體: 版本: 小弟遇到一個複製資料的問題 在錄製巨集上時常會用 select Selection.Copy Selection.PasteSpecial Paste: 之類的語法 我想縮短這種語法 開始改成類似這樣的寫法 Sheets(2).Range("A1") = Sheets(1).Range("A1") 不過小弟訪問的資料是多個儲存格範圍(是連在一起的,長或方) 網路上也有教範圍的複製 Sheets(2).Range("A1") = Sheets(1).Range("A1:P1") 但很詭異的狀況 不曉得是否為範圍列過大,或者數字太多, 我逐行測試時,資料一直沒有出現 i= 15xxx ,j = 16xxx Sheets("運算").Range("A1") = _ Sheets("員工分析").Range("A" & j & ":" & "aa" & i - 1) 可運行 "員工分析"表中確實有資料 運行後 "運算"表中 完全無資料,或者a1有出現一些字,其他全部空白 但也不曉得發生什麼問題了 我有試著乾脆改用迴圈一點一點填入,但時間超級久,好像不太好 我該試著用什麼方式會比較恰當呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.35.158.244 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1475975489.A.526.html

10/09 09:27, , 1F
如只要複製儲存格值,另想到的是以變數(類型variant或省略
10/09 09:27, 1F

10/09 09:28, , 2F
),指定範圍,再以range.resize = 變數方式填入
10/09 09:28, 2F
感謝s大 我剛也發現原來要貼上的大小,要等於複製的儲存格大小 那我們平常滑鼠複製貼上 他會自動貼上原本的大小 也是跟s大說的range.resize的意思相同嗎? ※ 編輯: waiter337 (114.35.158.244), 10/09/2016 09:35:42 我大概懂您的意思了 所以找出數據源的row跟col基本上是需要的 因為要貼上的地方(假設要排序)需要很準確的位置置入範圍 如果沒有row跟col,數值大小基本上都會過多或少於範圍內, 引響順序或其他資料 否則只能一格一格抓的意思 不過我先在測試一下好了 我好像.value 沒打到 跟貼上範圍沒有太確定(感覺有試過提供相同大小的範圍但失敗) ※ 編輯: waiter337 (114.35.158.244), 10/09/2016 09:47:29

10/09 09:47, , 3F
如回文所述
10/09 09:47, 3F

10/09 09:52, , 4F
另如回文提到的range = range.value則可省略要讀入變數的
10/09 09:52, 4F

10/09 09:52, , 5F
步驟
10/09 09:52, 5F

10/09 09:54, , 6F
如range("f1:i10") = range("a1:d10").value
10/09 09:54, 6F

10/09 09:55, , 7F
執行結果為 http://imgur.com/eRnjDD8
10/09 09:55, 7F

10/09 09:57, , 8F
如欄列數為變數,則加上range.resize調整
10/09 09:57, 8F

10/09 10:34, , 9F
感謝s大
10/09 10:34, 9F

10/11 16:46, , 10F
s大, 請問像這類的問題 常會遇到 型態不符合,錯誤13
10/11 16:46, 10F

10/11 16:46, , 11F
是否該 改dim arr() 或者dim double
10/11 16:46, 11F

10/11 16:47, , 12F
或者在sheets("xxx") 前面加cdbl 才能運行?
10/11 16:47, 12F

10/11 16:48, , 13F
因為改用= 之後 常常都會遇到此類狀況
10/11 16:48, 13F

10/11 16:49, , 14F
後面大部份都是 選擇範圍 或者準備要貼上 之類的情況卡
10/11 16:49, 14F

10/11 16:49, , 15F
10/11 16:49, 15F

10/11 16:49, , 16F
用變數選範圍之類的
10/11 16:49, 16F

10/11 16:50, , 17F
如 range("a" & "i" & ":" & "b" & "j").value
10/11 16:50, 17F

10/11 16:50, , 18F
"i", "j" 為變數
10/11 16:50, 18F

10/11 16:51, , 19F
錯了 =u=
10/11 16:51, 19F

10/11 16:51, , 20F
sheets("xxx").range("a" & i & ":" & "b" & j).value
10/11 16:51, 20F

10/11 16:53, , 21F
應該是說 準備要訪問時 ... 不過貼上有時後也會這樣
10/11 16:53, 21F
文章代碼(AID): #1N-Pb1Kc (Office)
文章代碼(AID): #1N-Pb1Kc (Office)