[算表] vba 選定範圍複製然後貼到選定的最後一列

作者: bbbsss1986 (老草莓)   2019-04-09 16:55:39
軟體: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 ("完成!")
一直找不到怎麼解決,懇請大大指點
作者: soyoso (我是耀宗)   2019-04-09 17:07:00
看要先range.autofill到ap2:bt2,再從ap2:bt2range.autofill 到range(ref1)
作者: bbbsss1986 (老草莓)   2019-04-09 17:10:00
selection 改成range 嗎?
作者: soyoso (我是耀宗)   2019-04-09 17:10:00
也可range.copy range(ref1),range.copy的range看要以selection或是指定儲存格可以selection或以range、cells來指定
作者: bbbsss1986 (老草莓)   2019-04-09 17:13:00
因為我的列數可能會增加,所以希望能夠自動貼上所設定第一列的公式,所以要判斷到最後一列再從第一列所設定的公式向下貼上
作者: soyoso (我是耀宗)   2019-04-09 17:15:00
是的,原po迴圈while..wend可以看的出來是想要判斷從儲存格a2起判斷連續儲存格的最後一筆的列號先說以這樣的迴圈是否是最後一列那不一定就要看原po的資料是否是連續的了
作者: bbbsss1986 (老草莓)   2019-04-09 17:18:00
ref1 ="ap2:bt " &maxR 這個有問題嗎?
作者: soyoso (我是耀宗)   2019-04-09 17:19:00
這樣沒有問題,就是字串帶入到變數ref1
作者: bbbsss1986 (老草莓)   2019-04-09 17:23:00
所以說,我錯誤點的地方要改成怎樣....我看不大懂
作者: soyoso (我是耀宗)   2019-04-09 17:24:00
range.autofill就是公式的拖曳,拖曳怎麼拖呢,就是橫向或
作者: bbbsss1986 (老草莓)   2019-04-09 17:24:00
對不起,我是上網自學的程度很低
作者: soyoso (我是耀宗)   2019-04-09 17:25:00
縱向,也就是要先將selection autofill到ap2:bt2接著從ap2:bt2再autofill到range(ref1)也就是說autofill要執行二次,第一次看要橫向或縱向,第二
作者: bbbsss1986 (老草莓)   2019-04-09 17:29:00
selection.autofill destination:=range("ap2:bt2")還是錯
作者: soyoso (我是耀宗)   2019-04-09 17:30:00
次就是縱向或橫向selection的資料是什麼公式?我測試selection內是公式是沒有錯誤訊息的原文也都沒有寫selection是什麼資料,測試上我也只能任意測試了,誰知道原po實際資料是什麼
作者: bbbsss1986 (老草莓)   2019-04-09 17:34:00
ap2:bt2 是我寫進cells的公式
作者: soyoso (我是耀宗)   2019-04-09 17:36:00
那selection是什麼(公式、值)呢?回文還是沒說,selection是否在range(ap2:bt2)範圍內呢?
作者: bbbsss1986 (老草莓)   2019-04-09 17:37:00
不好意思我不知道selection的作用是什麼,我只是複製來使用的...
作者: soyoso (我是耀宗)   2019-04-09 17:38:00
selection對回文者是個不明確儲存格以原文來看selection應就是所選取的儲存格range因是要range.autofill到range("ap2:bt2"),所以selection所選取的儲存格就應會是ap2這個儲存格假設所選取的儲存格是ao2的話,那range.autofill就會是range("ao2:bt2")
作者: bbbsss1986 (老草莓)   2019-04-09 17:50:00
作者: soyoso (我是耀宗)   2019-04-09 17:52:00
range要指定儲存格字串的
作者: bbbsss1986 (老草莓)   2019-04-09 17:52:00
range.autofill destination:=range(ref1)出現錯誤
作者: bbbsss1986 (老草莓)   2019-04-09 17:57:00
作者: soyoso (我是耀宗)   2019-04-09 17:57:00
且destination所指定不就是range(ref1),帶的就是字串
作者: bbbsss1986 (老草莓)   2019-04-09 17:58:00
謝謝s大 這樣已經成功跑完了也沒問題改成range("ap2 :bt2 ).auto fill destination:=range(ref1)這樣可以了
作者: soyoso (我是耀宗)   2019-04-09 18:01:00
這樣一定出錯1.range()括號內要雙引號 2.是autofill不是auto fill^^^^^^指的是"儲存格字串"
作者: bbbsss1986 (老草莓)   2019-04-09 18:07:00
修改好了,有試過增加列數公式也都能貼上了,謝謝s大

Links booklink

Contact Us: admin [ a t ] ucptt.com