如何使Excel VBA忽略具有if条件的公式单元格

时间:2017-06-08 09:40:18

标签: vba excel-vba excel

我想使用if条件来执行ClearContents任务。请找到我的以下代码。我在下面写了2个代码,但都不成功。

  1. 首先尝试

    t = 1
    Do While Cells(t, 1) <> ""
        If Cells(t, 1) <> "=" Then
            Cells(t, 1).ClearContents
        End If
        t = t + 1
    Loop
    
  2. 第二次尝试

    t = 1
    Do While Cells(t, 1) <> ""
        If Cells(t, 1) <> Formula Then
            Cells(t, 1).ClearContents
        End If
        t = t + 1
    Loop
    
  3. 基本上,我不想删除包含公式可用位置的单元格,但我想删除其他数据。

2 个答案:

答案 0 :(得分:4)

作为替代方案,有一种方法可以选择包含常量(非公式)值的所有单元格。

Cells.SpecialCells(xlCellTypeConstants, 23).ClearContents

比迭代所有细胞更快。

要仅针对特定范围或当前选择执行此操作,请将Cells替换为Range("A1:A100")Selection

(在Excel中,您可以在Home - &gt; Editing - &gt; Find&amp; Select - &gt; Go to Special。下找到它。在这里,您可以让Excel自动选择现有选择内的常量或公式。)

答案 1 :(得分:0)

写下这样的东西:

If Not Cells(t,1).HasFormula Then

End if

它会起作用。

编辑:

试试这样:

Sub TestMe()

    If Not Cells(1, 1).HasFormula Then
        Debug.Print "No Formula"
    Else
        Debug.Print "Has Formula"
    End If

End Sub

以下是有关HasFormula属性的更多信息:

https://msdn.microsoft.com/en-us/library/office/ff837123.aspx