如果满足两个条件,则复制先前的单元格格式,数据和字体

时间:2017-03-10 17:18:55

标签: excel vba excel-vba ms-office

我知道我做错了,我无法弄清楚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

1 个答案:

答案 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