看板 Office 關於我們 聯絡資訊
(若是和其他不同軟體互動之問題 請記得一併填寫) 軟體: 版本: 小弟遇到一個複製資料的問題 在錄製巨集上時常會用 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
soyoso: 如只要複製儲存格值,另想到的是以變數(類型variant或省略 10/09 09:27
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
soyoso: 如回文所述 10/09 09:47
soyoso: 另如回文提到的range = range.value則可省略要讀入變數的 10/09 09:52
soyoso: 步驟 10/09 09:52
soyoso: 如range("f1:i10") = range("a1:d10").value 10/09 09:54
soyoso: 執行結果為 http://imgur.com/eRnjDD8 10/09 09:55
soyoso: 如欄列數為變數,則加上range.resize調整 10/09 09:57
waiter337: 感謝s大 10/09 10:34
waiter337: s大, 請問像這類的問題 常會遇到 型態不符合,錯誤13 10/11 16:46
waiter337: 是否該 改dim arr() 或者dim double 10/11 16:46
waiter337: 或者在sheets("xxx") 前面加cdbl 才能運行? 10/11 16:47
waiter337: 因為改用= 之後 常常都會遇到此類狀況 10/11 16:48
waiter337: 後面大部份都是 選擇範圍 或者準備要貼上 之類的情況卡 10/11 16:49
waiter337: 住 10/11 16:49
waiter337: 用變數選範圍之類的 10/11 16:49
waiter337: 如 range("a" & "i" & ":" & "b" & "j").value 10/11 16:50
waiter337: "i", "j" 為變數 10/11 16:50
waiter337: 錯了 =u= 10/11 16:51
waiter337: sheets("xxx").range("a" & i & ":" & "b" & j).value 10/11 16:51
waiter337: 應該是說 準備要訪問時 ... 不過貼上有時後也會這樣 10/11 16:53