检查单元格是否不为空并复制范围

时间:2019-03-04 14:01:30

标签: excel vba

我想寻求帮助。我的目的是检查DR108单元是否为空(或为了避免隐藏0,表中处理了足球比分,如果有更好的情况,我可以替换为DR),如果条件为假, (其中有一个数字),然后将DN108:DS108范围复制到DT108范围。我尝试了几种方法(无效,如果不是非空,<>“”),在论坛上进行搜索,但仍然找不到正确的答案,我总是收到2条错误消息:错误9和错误1004。你能帮我做到吗?

奖金问题:如何避免在DR108:DR183的范围内循环执行该命令以避免编码每一行?我已经阅读过offset(1)命令,但是我的VBA知识真的很差,每次需要做的事情我都在挣扎。非常感谢。

Dim cel as String
Set cel = Range("DR108").Value  
If cel <> "" Then  
Set rng = Worksheets("Sheet1").Range("DN108:DS108")
Worksheets("Sheet1").Range("DT108").Resize(rng.Rows.Count, rng.Columns.Count).Cells.Value = rng.Cells.Value

Else 

Return

End If

1 个答案:

答案 0 :(得分:0)

尝试此操作,它将在108到183之间循环,并测试单元格值是否为空。如果是,则它将内容复制为DT列中的相应行作为值(忽略格式),否则将跳至范围内的另一个单元格。

Sub simple_IF_copy()
    Dim n As Integer

    Application.ScreenUpdating = False 'turns off screen updating, makes macro go faster

For n = 108 To 183 'range for which macro should do the loop
    If Range("DR" & n).Value <> "" Then 'checks cells DR108 to DR183 for values
        Range("DN" & n, "DS" & n).Copy ' Copy of range DN:DS
        Range("DT" & n).PasteSpecial xlPasteValues 'pastes values in DT in the same row
        Else:
    End If
Next n

Application.CutCopyMode = False
Application.ScreenUpdating = True

End Sub