如果满足两个条件,则复制以前的单元格格式、数据和字体
Copy previous cell format, data and font if two conditions are met
我知道我做错了,我不太明白 VBA 的命名法。基本上,如果满足两个条件,我想从单元格上方的单元格复制格式、数据和字体。确切地说,当且仅当 Z8 为空且 S8 中有信息时,我希望 Z8 从 Z7 复制格式、数据和字体。否则 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
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
我知道我做错了,我不太明白 VBA 的命名法。基本上,如果满足两个条件,我想从单元格上方的单元格复制格式、数据和字体。确切地说,当且仅当 Z8 为空且 S8 中有信息时,我希望 Z8 从 Z7 复制格式、数据和字体。否则 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
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