多个单元格范围作为值

时间:2017-03-27 18:55:06

标签: excel vba excel-vba

我是VBA的新手所以请原谅我的无知:)

我在编写(和理解)为什么我的代码不在VBA中工作时遇到了麻烦。我试图引用多个细胞。我的代码是

    If sheet4.range("G2:G26").value = "" Then
        Sheet4.range("G2:G26").value = "No Gas"
           Exit Sub
               End If
    End Sub

我知道我不能使用多个单元格作为值,但是如何编写代码呢?另外,为什么我不能使用多个单元格作为值?谢谢大家的帮助

4 个答案:

答案 0 :(得分:5)

您可以一次为多个单元格分配值:

Sheet4.range("G2:G26").value = "No Gas"

会将No Gas放在范围内的每个单元格中。

您无法针对一个值测试整个范围,因为它是一个数组且数组不等于单个值。

你可以迭代:

Dim cell As Range
For Each cell in Sheet4.range("G2:G26")
    If cell = "" then
        cell = "No Gas"
    End IF
Next cell

或者您可以选择所有空白的并一次填写:

Sheet4.range("G2:G26").SpecialCells(xlCellTypeBlanks) = "No Gas"

答案 1 :(得分:1)

或者只是替换所有空白单元格:

sheet4.range("G2:G26").Replace "", "No Gas", xlWhole 

答案 2 :(得分:0)

在您的帖子中,您似乎想要针对相同的值检查整个范围

您可以按照以下方式执行此操作:

With sheet4.Range("G2:G26") '<--| reference your range
    If WorksheetFunction.CountIf(.Cells, "mysearchedvalue")= .Count Then .Value = "mysubstitutevalue"
End With 

如果您想针对空白内容检查整个范围,那么您可以使用以下代码:

With sheet4.Range("G2:G26") '<--| reference your range
    If WorksheetFunction.CountBlank(.Cells)= .Count Then .Value = "No Gas"
End With 

答案 3 :(得分:0)

谢谢大家的帮助。斯科特的解决方案非常有效。我也试图了解其他解决方案。我真的想成为一名专业人士。