Vba 多单元格范围作为值

Vba 多单元格范围作为值,vba,excel,Vba,Excel,我是VBA新手,请原谅我的无知:) 我在编写(和理解)为什么我的代码不能在VBA中工作时遇到困难。我正在尝试引用多个单元格。我的代码是 If sheet4.range("G2:G26").value = "" Then Sheet4.range("G2:G26").value = "No Gas" Exit Sub End If End Sub 我知道我不能使用多个单元格作为值,但我该如何编写代码?还有,为什么

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

我在编写(和理解)为什么我的代码不能在VBA中工作时遇到困难。我正在尝试引用多个单元格。我的代码是

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

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

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

Sheet4.range("G2:G26").value = "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"

从你的帖子上看,你似乎想要对照相同的值检查整个范围

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

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

使用sheet4.Range(“G2:G26”)或仅替换所有空白单元格:

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

谢谢大家的帮助。斯科特的解决方案非常有效。我也在努力理解其他解决方案。我真的很想成为这方面的专家。

不清楚……你是在测试所有单元格都是空的还是任何单元格都是空的?只是g2到G26单元格的某个范围。注意,你可能想学习如何正确编写代码。好的,这开始有意义了。我最终要做的是,如果我在G2中输入了一个数字,那么它将保持为我输入的数字。如果我没有输入任何内容,那么它将默认为“无气体”。此代码是否表示此情况?最后两个代码中的任何一个都将用“无气体”填充空格,而不使用值。嗨,斯科特,谢谢您的帮助。嗨,斯科特,当我在Sheet4.range(“G2:G26”)中为每个单元格添加时,如果cell=”“,则cell=“无气体”如果下一个单元格和我单击“播放”或“运行”按钮,则结束运行,但运行时以下代码有效?当我添加Sheet4.range(“G2:G26”).SpecialCells(xlCellTypeBlanks)=“No Gas”时,我只是想对运行的代码有一个很好的理解。我没有为它创建模块,我只是在第4页中以私有形式编写。编辑器列表为“工作表”和“激活”,设置是否正确?只是试图了解代码运行。@ VBAKOD见编辑我忘了宣布单元格作为一个范围。是的,但看到第一个评论我的答案,OP想离开这些细胞的价值,而只替换空白的备用。@ ScottCraner,是的,但1)声明“你不能测试整个范围对一个值”不是真的2)OP的问题不清楚3)Gary的学生的澄清请求仍未得到答复4)OP尚未接受您的解决方案,因此我主要想澄清第1点,并可能拦截(非常)隐藏OP的请求:-)
sheet4.range("G2:G26").Replace "", "No Gas", xlWhole