VBA Excel循环-新手用户

VBA Excel循环-新手用户,vba,excel,Vba,Excel,我是VBA的新手,但我希望专家能帮助我完成我的工作 基本上使用录制宏和我对VBA的基本掌握,我创建了以下内容:;我想做的是把B4,D4改成B5,D5,B6,D6等等。。。100圈 我完全陷入困境,希望有人能给我指出正确的方向 非常感谢 达尔 记录器是学习如何在vba中编写特定内容的一个很好的工具。它的缺点在于它使用的Select和Activate速度很慢 当只需要值时,直接赋值即可 对于,对于每个,执行。。。谷歌还可以教你其他一些东西 要基于Scott的答案,可以在目标工作表中的单元格上设置“

我是VBA的新手,但我希望专家能帮助我完成我的工作

基本上使用录制宏和我对VBA的基本掌握,我创建了以下内容:;我想做的是把B4,D4改成B5,D5,B6,D6等等。。。100圈

我完全陷入困境,希望有人能给我指出正确的方向

非常感谢

达尔

  • 记录器是学习如何在vba中编写特定内容的一个很好的工具。它的缺点在于它使用的
    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