我知道我做错了,我无法弄清楚VBA的命名。基本上,如果满足两个条件,我想从单元格上方的单元格中复制格式,数据和字体。确切地说,我希望Z8从Z7复制格式,数据和字体,当且仅当Z8为空并且S8中有信息时。否则Z8会保持这种状态。我想在特定的范围内做这件事。
我不想使用SET,因为我想使用其他宏,我不希望范围被永久设置。
Sub ZFillTest()
Dim i As Integer
Dim k As Integer
Dim rng As Range
i = 0
k = 0
i = i + 4
k = k + 4
rng = ("Z5:Z200")
For Each cell In rng
If cell.Offset(k, 8).Value <> "" And cell(k, Z + i).Value = "" Then
cell(k, Z + i).Value = cell(k, Z + i - 1).Value
i = i + 1
k = k + 1
End If
Next
End Sub
答案 0 :(得分:1)
Set
是实例化对象所必需的。您需要创建一个Range
对象并循环遍历它,以便您拥有以使用Set
。这并不是说你不能在以后阶段将它设置为不同的东西。
尝试使用以下代码:
Sub ZFillTest()
Dim rng As Range, r As Range
Set rng = ThisWorkbook.Worksheets("Sheet1").Range("Z5:Z200")
For Each r In rng
If r.Value = vbNullString And r.Offset(0, -7).Value <> vbNullString Then
r.Offset(-1, 0).Copy Destination:=r
r.Value = r.Value 'if you don't want formulas copied over
End If
Next r
End Sub