您好我是VBA和宏的新手。我想删除Cell D3
if Cell B4 = FALSE
的内容。如果Cell B4 = TRUE
则不做任何事情。这就是我写的
Range("b3:b4").Calculate
Range("B4").Select
If Range = False Then
Range("D3").Select
cell.ClearContents
End If
End If
End Sub
我在开始时有计算,因为我将工作表设置为手动计算,因为我不想重新计算所有内容。
我写的是什么?
答案 0 :(得分:1)
试试这个
Sub Demo()
Application.Calculation = xlCalculationAutomatic 'set calculation mode to automatic
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet2") 'change Sheet2 to your data sheet
'check condition for B4=FALSE
If Not ws.Range("B4") Then ws.Range("D3").ClearContents
Application.Calculation = xlCalculationManual 'set calculation mode to manual
End Sub
注意:应避免使用SELECT
。有关详细信息,请参阅this。
编辑: 正如@Slai在下面的评论中指出的那样,如果If Not ws.Range("B4")
的文字是TRUE
,则Range("B4")
会返回False
0
,或
TRUE
(空白)。因此,您必须确保在FLASE
中仅输入Cell B4
和IF
,否则在代码中添加另一个BOOLEAN
条件,以检查输入的值是否为{{ 1}}或不。因此将上面的代码更新为
Sub Demo()
Application.Calculation = xlCalculationAutomatic 'set calculation mode to automatic
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet2") 'change Sheet2 to your data sheet
If VarType(ws.Range("B4")) = vbBoolean Then 'check whether the cell value is boolean
'check condition for B4=FALSE
If Not ws.Range("B4") Then ws.Range("D3").ClearContents
End If
Application.Calculation = xlCalculationManual 'set calculation mode to manual
End Sub
答案 1 :(得分:0)
您可以尝试使用Mrig的代码。但是,我想您可能想知道您的代码是如何工作的。我认为问题在于:
1)如果Range = False那么 - >请将其更改为:如果Selection = False则
2)cell.ClearContents - >请将其更改为:Selection.ClearContents
3)删除最后一个"结束if",因为它过多。
答案 2 :(得分:0)
Mrig 已经为您提供了一个解决方案,但是为了帮助您将来您应该知道范围的默认属性是“值”,因此您可以(如同Mrig)直接测试它。 (即如果不是ws.Range(“B4”)与“如果不是ws.Range(”B4“)相同。值”)。此外,在访问其方法之前无需选择范围/单元格,因此您可以执行“范围(”D3“)。ClearContents ”而无需先选择单元格,只要您没有其他理由选择或激活范围。
Ps单元格中的值(除非另有说明,“选项比较文本”或转换单元格值)在测试时区分大小写,因此对范围使用相同的一致大写也是一种好习惯,也有助于读取代码。