2016-08-29 9 views
-1

range.formulaプロパティがどのようにしてより詳細にvbaの基本的なヘルプをどのように動作させるかを説明できるかどうか疑問に思っています。2次元配列のプロパティ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 

私は細胞の例範囲のために、このようにチェックしたい場合、これはしかし、何を動作しますが、範囲:アゲイン(「A1 X1000」) を私はループと変更しながら、範囲の代わりに、私はあなたが入れ子にできることを知っています(i、j) のようなセルのインデックスですが、再びrange.formulaというプロパティを使用しています。

2次元配列の式を定義する方法については数時間を費やしました。誰でもこのトピックについて詳しく説明できますか?

おかげで、

+2

、 'Range'はあなたが空白のセルを選択することができます' SpecialCells'、というプロパティを持っています。この式は、A1:A100': 'Range(" A1:A100 ")。SpecialCells(xlCellTypeBlanks).Count'の範囲の空白セルの数を計算します。必要に応じて範囲を調整することができます。 – BruceWayne

+0

こんにちはブルース、はい私はこのプロパティを知っています。しかし、私はプロパティの式を使用してこのようにしたいと思うので私は尋ねています。しかし、答えが –

+1

ありがとう( 'SpecialCells(xlCellTypeFormulas)'もあります) – BruceWayne

答えて

0

.formulaプロパティが設定または特定の範囲内に含まれる式を返すために使用されます。範囲に複数のセルが含まれている場合、このプロパティは2次元配列を返します。

私はそれが0を返した場合、すべてのセルが空である次の命令

Application.Count(Range("A1:X1000")) 

を使用します。

+0

こんにちは、ありがとう。 私はさまざまな方法でテストできることを知っていますが、プロパティの式を理解しようとしています。 私は別の質問でお聞きしてみてください:(「:X1000 A1」) がのが唯一のセルB14がでいくつかの式を有するとしましょう、私は(vba.msgBoxで)出力したい場合はどう セルの範囲内の最初の式の表現の範囲はその範囲内の他のセルは空です。 ありがとう –

+0

この場合、.formulaプロパティは配列を返します。セルB14の内容は(1,13)または(2,14) – h2so4

1

これは何の助けですか?

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 

EDIT#1:

あなたはループを必要としません。 B2:範囲A1のためにあなただけの空のセルをカウントしようとしている場合

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 

enter image description here

+0

になります。 .formulaはrangeのプロパティであるため、これをdo whileループ(forループなし)を使っても定義できます。この質問は、Excelオブジェクトモデル –

+0

@PavolNamerを理解するために、よりです - あなたは(あなたのOPに)、あなたは見つける/学ぼうとしている正確に何* *明確にしてくださいことはできますか?実用的な答え、または 'Range'の' .Formula'プロパティに関する議論をお探しですか?私はあなたが[Microsoft情報](https://msdn.microsoft.com/en-us/library/office/ff838835.aspx)を読んだことを前提としていますか? – BruceWayne

+0

はい.formulaプロパティの詳細ドキュメントは見つかりませんでした。このプロパティを完全に理解するための詳細なドキュメントを探したいだけです。ありがとうございます –