VBA Excel循环-新手用户
我是VBA的新手,但我希望专家能帮助我完成我的工作 基本上使用录制宏和我对VBA的基本掌握,我创建了以下内容:;我想做的是把B4,D4改成B5,D5,B6,D6等等。。。100圈 我完全陷入困境,希望有人能给我指出正确的方向 非常感谢 达尔VBA Excel循环-新手用户,vba,excel,Vba,Excel,我是VBA的新手,但我希望专家能帮助我完成我的工作 基本上使用录制宏和我对VBA的基本掌握,我创建了以下内容:;我想做的是把B4,D4改成B5,D5,B6,D6等等。。。100圈 我完全陷入困境,希望有人能给我指出正确的方向 非常感谢 达尔 记录器是学习如何在vba中编写特定内容的一个很好的工具。它的缺点在于它使用的Select和Activate速度很慢 当只需要值时,直接赋值即可 对于,对于每个,执行。。。谷歌还可以教你其他一些东西 要基于Scott的答案,可以在目标工作表中的单元格上设置“
Select
和Activate
速度很慢对于每个
,执行
。。。谷歌还可以教你其他一些东西要基于Scott的答案,可以在目标工作表中的单元格上设置“范围对象”,并在每次循环时偏移粘贴单元格的位置一次。这给了您更多的灵活性:
dim i as long, r as range
set r = worksheets("CALCULATOR").range("B1")
for i = 0 to 99
if worksheets("BUILDING").cells(i + 4, "B") <> "" then
r.offset(i, 0) = worksheets("BUILDING").cells(i + 4, "D")
end if
next i
变暗i为长,r为范围
集合r=工作表(“计算器”)。范围(“B1”)
对于i=0到99
如果工作表(“建筑”)单元格(i+4,“B”)”,则
r、 偏移量(i,0)=工作表(“建筑”)。单元格(i+4,“D”)
如果结束
接下来我
在记录器的防御中,它使用Select
和Activate
特别是因为它记录用户的动作,因为这是它的本质=)Scott,非常感谢您的帮助。我已经复制并粘贴了您所放置的内容(替换上面的If-to-End-If语句),当我运行它时,我得到的运行时错误“9”下标超出范围,我不确定这意味着什么?在哪一行@Dar@Dar请确保工作表名称拼写正确,我可能有一个拼写错误。很抱歉打扰您,有没有办法使“I=4到(建筑)D列数据的最后一行”?
Dim i as Long
for i = 4 to 104
IF worksheets("CALCULATOR").Cells(i,"B").Value = "" then _
worksheets("CALCULATOR").Cells(i,"B").Value = Worksheets("BUILDING").cells(i,"D").value
Next i
dim i as long, r as range
set r = worksheets("CALCULATOR").range("B1")
for i = 0 to 99
if worksheets("BUILDING").cells(i + 4, "B") <> "" then
r.offset(i, 0) = worksheets("BUILDING").cells(i + 4, "D")
end if
next i