VBA Excel循环 - 新手用户

时间:2018-05-16 18:03:59

标签: excel vba excel-vba

我是VBA的新手,但我希望专家可以帮助我做我想做的事。

基本上使用Record Macro和我对VBA的基本把握我创建了以下内容;我想要做的是将B4,D4更改为B5,D5 B6,D6等......进行100次循环。

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

非常感谢。

达尔

If Sheets("BUILDING").Range("B4").Value = "" Then

Else

Sheets("CALCULATOR").Select

Range("B1").ClearContents

Sheets("BUILDING").Select

Range("D4").Select

Selection.Copy

Sheets("CALCULATOR").Select

Range("B1").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Application.Run "Test1"

End If

2 个答案:

答案 0 :(得分:2)

  1. 录音机是学习如何在vba中编写特定内容的好工具。这很糟糕,因为它使用的SelectActivate很慢。

  2. 仅需要值时,只需直接指定值。

  3. 您使用ForFor EachDo循环播放...还有其他谷歌可以教您。

  4. 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
    

答案 1 :(得分:0)

为了建立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