[算表] 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