因此,我设置了以下 VBA 循环,但想添加一行内容“如果此范围内有两个具有值的单元格,请执行此操作。如果范围内有三个具有值的单元格” , 去做。”到目前为止我所拥有的是:
Sub Test1()
Dim Rng As Range
Dim i As Long
i = 3
Application.ScreenUpdating = True
While i <= 133
Set Rng = Range("C" & i)
If Rng.Offset(, 2).Resize(, 7) <> "" Then
Rng.Offset(, 1).FormulaR1C1 = "Blank"
i = i + 1
Else: Stop
End If
Wend
End Sub
因此,如果该范围为空,我会让 VBA 脚本将“Blank”一词打印到相应的单元格中。但是我如何添加更多行来表示“如果此范围中的一个单元格包含一个值”或“如果此范围中的两个单元格包含一个值”
最佳答案
以下是如何检查给定范围内是否有多个非空单元格的方法:
If Application.WorksheetFunction.CountA(Rng.Offset(, 2).Resize(, 7)) > 1 Then
对您的代码的一些额外提示:
如果您确切知道
i
的初始值和最终值,您应该使用For ... Next
循环而不是While ... Wend
。所以你可以替换这段代码:i = 3 '(...) While i <= 133 '(...) i = i + 1 Wend
这样:
For i = 3 To 133 '(...) Next i
我认为这行代码会导致类型不匹配错误:
If Rng.Offset(, 2).Resize(, 7) <> "" Then
因为您正在尝试将
Range
类型的对象与原始值(空字符串)进行比较。为了避免这个问题,您可以使用与上面类似的代码:If Application.WorksheetFunction.CountA(Rng.Offset(, 2).Resize(, 7)) = 0 Then
关于vba - 在 VBA 中,当范围中多个单元格包含一个值时,我想创建一个 If 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31830883/