Vba 如何定义二维数组的属性range.formula

Vba 如何定义二维数组的属性range.formula,vba,excel,properties,formula,Vba,Excel,Properties,Formula,我想知道是否有人能比vba基本帮助更详细地解释property range.formula的工作原理 我想使用此属性测试范围内的所有单元格是否为空。我知道,我可以键入大量其他代码如何测试它,但我想找到如何使用此属性的方法 例如,如果我想检查A1:A10范围内的所有单元格,我只会这样做 Private Sub cell_in_range() Dim i As Integer Dim iTest As Integer i = 1 Do While i <= 10 And iT

我想知道是否有人能比vba基本帮助更详细地解释property range.formula的工作原理

我想使用此属性测试范围内的所有单元格是否为空。我知道,我可以键入大量其他代码如何测试它,但我想找到如何使用此属性的方法

例如,如果我想检查A1:A10范围内的所有单元格,我只会这样做

    Private Sub cell_in_range()
Dim i As Integer
Dim iTest As Integer

  i = 1
  Do While i <= 10 And iTest = 0
  iTest = VBA.Len(Sheet17.Range("A" & i).Formula)
    If iTest > 0 Then
    Call VBA.MsgBox("Not all cells empty")
    End If

    i = i + 1
  Loop

  If VBA.Len(shee17.Range("A" & i)) = 0 Then
  Call VBA.MsgBox("All cells empty")
  End If


End Sub
这是可行的,但如果我想以这种方式检查例如单元格范围1:X1000,该怎么办 我再次知道,我可以在循环和改变单元格索引(如cellsi,j)时,代替range 但我还是想用property range.formula来做

我花了几个小时在谷歌上搜索如何定义二维数组的公式。谁能更详细地解释一下这个话题


谢谢,

使用.formula属性设置或返回特定范围内包含的公式。如果该区域包含多个单元格,则该属性将返回二维数组

我会使用下面的说明

Application.Count(Range("A1:X1000"))
如果返回0,则所有单元格都为空。

这有什么帮助吗

Sub formulatest()
    Dim r As Range, rng As Range
    Set rng = Range("A1:X1000")

    For Each r In rng
        If r.HasFormula Then
            MsgBox "cell " & r.Address & " has a formula"
            Exit Sub
        End If
    Next r
    MsgBox "no cells have formulas"
End Sub
编辑1:

你不需要循环。对于A1:B2范围:


如果您只是尝试计数空单元格,则Range有一个名为SpecialCells的属性,您可以使用该属性选择空单元格。此公式将计算A1:A100:RangeA1:A100.SpecialCellsxlCellTypeBlanks.Count范围内的空白单元格数。你可以根据需要调整这些范围。你好,布鲁斯,是的,我知道这个属性。但我这么问是因为我想用属性公式这样做。但是谢谢你的回答还有一些特殊的cellsxlcelltype公式,这有帮助吗?你需要确切地说明“所有单元格都是空的”是什么意思。单元格是否包含可能返回零长度字符串的公式?“非空”单元格是否包含文本、数字或两者的组合?数据是否可能是从包含零长度字符串、空格、非中断空格等的网页导入的,这些字符串、空格、非中断空格等看起来可能是空的,但实际上不是空的?我想您可能正在处理一个问题。你能向小组阐明你的总体目标吗?你只是想找到空的单元格吗?还是只有一个公式的细胞?看起来您正在测试公式长度是否超过1个字符…您好,谢谢。我知道我可以用很多不同的方法来测试它,但我试着去理解属性公式。我试着用不同的问题问你:如果我想在vba.msgBox中输出单元格范围A1:X1000中的第一个公式表达式,假设只有单元格B14中有一些公式,而此范围中的其他单元格为空。谢谢。在这种情况下,property.formula将返回一个数组。细胞B14的含量可能在1,13或2,14,但实际上并非如此。因为.formula是range的属性,所以您也可以使用do while循环来定义它,而不使用for循环。这个问题更多的是为了理解excel对象model@PavolNamer-你能在你的OP中澄清你到底想了解什么吗?您是在寻找一个实用的答案,还是在讨论范围的.Formula属性?我想您已经阅读了?是的,我已经阅读了,但是找不到有关.formula属性的详细文档。只是想找到更深入的文档来充分理解这个属性。Thanks@PavolNamer见我的编辑1我不认为他在这里要求VBA/公式解决方案。我不太清楚OP在寻找什么,但我认为它只是.Formula属性的细节?什么样的细节,什么样的具体想法,我不太清楚。
Sub dural()
    Dim rng As Range
    Set rng = Range("A1:B2")

    arr = rng.Formula

    For Each a In arr
        MsgBox a
    Next a
End Sub