作者bbbsss1986 (老草莓)
看板Office
標題[算表] vba 選定範圍複製然後貼到選定的最後一列
時間Tue Apr 9 16:55:39 2019
軟體:excel
版本:2013
程式碼如下
Dim maxR As Long
Dim sh As Worksheet
Set sh = ActiveSheet
maxR = 2
While sh.Cells(maxR, 1).Value <> ""
maxR = maxR + 1
Wend
maxR = maxR - 1
ref1 = "AP2:BT" & maxR ‘→要複製的範圍
Selection.AutoFill Destination:=Range(ref1) =>錯誤點
MsgBox ("完成!")
一直找不到怎麼解決,懇請大大指點
-----
Sent from JPTT on my HMD Global TA-1052.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.68.34
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Office/M.1554800141.A.C9B.html
1F:→ soyoso: 看要先range.autofill到ap2:bt2,再從ap2:bt2 04/09 17:07
2F:→ soyoso: range.autofill 到range(ref1) 04/09 17:08
3F:→ bbbsss1986: selection 改成range 嗎? 04/09 17:10
4F:→ soyoso: 也可range.copy range(ref1),range.copy的range看要以 04/09 17:10
5F:→ soyoso: selection或是指定儲存格 04/09 17:11
6F:→ soyoso: 可以selection或以range、cells來指定 04/09 17:12
7F:→ bbbsss1986: 因為我的列數可能會增加,所以希望能夠自動貼上所設定 04/09 17:13
8F:→ bbbsss1986: 第一列的公式,所以要判斷到最後一列再從第一列所設定 04/09 17:13
9F:→ bbbsss1986: 的公式向下貼上 04/09 17:13
10F:→ soyoso: 是的,原po迴圈while..wend可以看的出來是想要判斷從儲存 04/09 17:15
11F:→ soyoso: 格a2起判斷連續儲存格的最後一筆的列號 04/09 17:16
12F:→ soyoso: 先說以這樣的迴圈是否是最後一列那不一定 04/09 17:17
13F:→ soyoso: 就要看原po的資料是否是連續的了 04/09 17:17
14F:→ bbbsss1986: ref1 ="ap2:bt " &maxR 這個有問題嗎? 04/09 17:18
15F:→ soyoso: 這樣沒有問題,就是字串帶入到變數ref1 04/09 17:19
16F:→ bbbsss1986: 所以說,我錯誤點的地方要改成怎樣....我看不大懂 04/09 17:23
17F:→ soyoso: range.autofill就是公式的拖曳,拖曳怎麼拖呢,就是橫向或 04/09 17:24
18F:→ bbbsss1986: 對不起,我是上網自學的程度很低 04/09 17:24
19F:→ soyoso: 縱向,也就是要先將selection autofill到ap2:bt2 04/09 17:25
20F:→ soyoso: 接著從ap2:bt2再autofill到range(ref1) 04/09 17:25
21F:→ soyoso: 也就是說autofill要執行二次,第一次看要橫向或縱向,第二 04/09 17:29
22F:→ bbbsss1986: selection.autofill destination:=range("ap2:bt2")還 04/09 17:29
23F:→ bbbsss1986: 是錯 04/09 17:29
24F:→ soyoso: 次就是縱向或橫向 04/09 17:30
25F:→ soyoso: selection的資料是什麼公式? 04/09 17:31
26F:→ soyoso: 我測試selection內是公式是沒有錯誤訊息的 04/09 17:32
27F:→ soyoso: 原文也都沒有寫selection是什麼資料,測試上我也只能任意 04/09 17:32
28F:→ soyoso: 測試了,誰知道原po實際資料是什麼 04/09 17:33
29F:→ bbbsss1986: ap2:bt2 是我寫進cells的公式 04/09 17:34
30F:→ soyoso: 那selection是什麼(公式、值)呢?回文還是沒說,selection 04/09 17:36
31F:→ soyoso: 是否在range(ap2:bt2)範圍內呢? 04/09 17:36
32F:→ bbbsss1986: 不好意思我不知道selection的作用是什麼,我只是複製 04/09 17:37
33F:→ bbbsss1986: 來使用的... 04/09 17:37
34F:→ soyoso: selection對回文者是個不明確儲存格 04/09 17:38
35F:→ soyoso: 以原文來看selection應就是所選取的儲存格range 04/09 17:40
36F:→ soyoso: 因是要range.autofill到range("ap2:bt2"),所以selection 04/09 17:44
37F:→ soyoso: 所選取的儲存格就應會是ap2這個儲存格 04/09 17:44
38F:→ soyoso: 假設所選取的儲存格是ao2的話,那range.autofill就會是 04/09 17:45
39F:→ soyoso: range("ao2:bt2") 04/09 17:46
41F:→ soyoso: range要指定儲存格字串的 04/09 17:52
42F:→ bbbsss1986: range.autofill destination:=range(ref1)出現錯誤 04/09 17:52
43F:→ soyoso: 當然會出錯 04/09 17:52
44F:→ soyoso: 我打range.autofill只是要讓原po再google用的 04/09 17:53
45F:→ soyoso: 微軟microsoft docs也就只是range.autofill這樣關鍵字 04/09 17:54
46F:→ soyoso: 我回文我沒有辦法知道selection是那個儲存格,也就沒辦法 04/09 17:56
47F:→ soyoso: 就打range("ap2").autofill...這樣 04/09 17:56
49F:→ soyoso: 且destination所指定不就是range(ref1),帶的就是字串 04/09 17:57
50F:→ bbbsss1986: 謝謝s大 這樣已經成功跑完了也沒問題 04/09 17:58
51F:→ bbbsss1986: 改成range("ap2 :bt2 ).auto fill destination:=range 04/09 18:00
52F:→ bbbsss1986: (ref1)這樣可以了 04/09 18:00
53F:→ soyoso: 這樣一定出錯 04/09 18:01
54F:→ soyoso: 1.range()括號內要雙引號 2.是autofill不是auto fill 04/09 18:02
55F:→ soyoso: ^^^^^^指的是"儲存格字串" 04/09 18:03
56F:→ bbbsss1986: 修改好了,有試過增加列數公式也都能貼上了,謝謝s大 04/09 18:07