作者waiter337 (給開司一罐蘇格登)
看板Office
標題[問題] vba copy 改成 =
時間Sun Oct 9 09:11:26 2016
(若是和其他不同軟體互動之問題 請記得一併填寫)
軟體:
版本:
小弟遇到一個複製資料的問題
在錄製巨集上時常會用
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://webptt.com/m.aspx?n=bbs/Office/M.1475975489.A.526.html
1F:→ soyoso: 如只要複製儲存格值,另想到的是以變數(類型variant或省略 10/09 09:27
2F:→ soyoso: ),指定範圍,再以range.resize = 變數方式填入 10/09 09:28
感謝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
3F:→ soyoso: 如回文所述 10/09 09:47
4F:→ soyoso: 另如回文提到的range = range.value則可省略要讀入變數的 10/09 09:52
5F:→ soyoso: 步驟 10/09 09:52
6F:→ soyoso: 如range("f1:i10") = range("a1:d10").value 10/09 09:54
8F:→ soyoso: 如欄列數為變數,則加上range.resize調整 10/09 09:57
9F:→ waiter337: 感謝s大 10/09 10:34
10F:→ waiter337: s大, 請問像這類的問題 常會遇到 型態不符合,錯誤13 10/11 16:46
11F:→ waiter337: 是否該 改dim arr() 或者dim double 10/11 16:46
12F:→ waiter337: 或者在sheets("xxx") 前面加cdbl 才能運行? 10/11 16:47
13F:→ waiter337: 因為改用= 之後 常常都會遇到此類狀況 10/11 16:48
14F:→ waiter337: 後面大部份都是 選擇範圍 或者準備要貼上 之類的情況卡 10/11 16:49
15F:→ waiter337: 住 10/11 16:49
16F:→ waiter337: 用變數選範圍之類的 10/11 16:49
17F:→ waiter337: 如 range("a" & "i" & ":" & "b" & "j").value 10/11 16:50
18F:→ waiter337: "i", "j" 為變數 10/11 16:50
19F:→ waiter337: 錯了 =u= 10/11 16:51
20F:→ waiter337: sheets("xxx").range("a" & i & ":" & "b" & j).value 10/11 16:51
21F:→ waiter337: 應該是說 準備要訪問時 ... 不過貼上有時後也會這樣 10/11 16:53