我是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
答案 0 :(得分:2)
录音机是学习如何在vba中编写特定内容的好工具。这很糟糕,因为它使用的Select
和Activate
很慢。
仅需要值时,只需直接指定值。
您使用For
,For Each
,Do
循环播放...还有其他谷歌可以教您。
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