2016-08-29 1 views
-1

Ich frage mich, ob jemand erklären kann, wie property range.formula genauer arbeitet als vba basic help.Wie definiere ich Eigenschaft range.formula für zweidimensionales Array

Ich möchte diese Eigenschaft verwenden, um zu testen, ob alle Zellen in Reichweite leer sind. (Ich weiß, und ich kann eine Menge anderer Codes eingeben, um es zu testen, aber ich würde gerne Wege finden, wie man diese Eigenschaft benutzt).

Wenn ich zum Beispiel alle Zellen in Reichweite ("A1: A10") überprüfen möchte, habe ich das nur so gemacht.

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 

Das funktioniert aber was ist, wenn ich auf diese Weise beispielsweise im Bereich von Zellen überprüfen möchten, reichen („A1: X1000“) Wieder weiß ich, dass anstelle des Bereichs I können Sie verschachtelte while-Schleifen und ändern Zellen Index wie Zellen (i, j) aber auch hier würde ich es tun Eigenschaft mit range.formula

I eine Stunde ausgegeben google wie Formel für die zweidimensionale Anordnung zu definieren. Kann jemand dieses Thema näher erläutern?

Danke,

+2

Wenn Sie nur versuchen, die leeren Zellen zu zählen, 'Range' hat eine Eigenschaft namens' SpecialCells', die Sie leere Zellen mit auswählen können. Diese Formel berechnet die Anzahl der leeren Zellen im Bereich 'A1: A100': 'Bereich (" A1: A100 "). SpecialCells (xlCellTypeBlanks) .Count'. Sie können diese Bereiche nach Bedarf anpassen. – BruceWayne

+0

Hallo Bruce, Ja, ich kenne diese Eigenschaft. Aber ich frage, weil ich denke, ich möchte auf diese Weise mit Eigenschaftsformel tun. Aber danke für die Antwort –

+1

(Es gibt auch die 'SpecialCells (xlCellTypeFormulas)', hilft das?) – BruceWayne

Antwort

0

die .Formula Eigenschaft wird verwendet, um die Formel in einem bestimmten Bereich enthalten ist, zu setzen oder zurück. Wenn der Bereich mehrere Zellen enthält, gibt die Eigenschaft ein zweidimensionales Array zurück.

würde ich die folgende Anweisung

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

verwenden, wenn es 0 zurückgibt, werden alle Zellen leer sind.

+0

Hallo, danke. Ich weiß, dass ich es auf viele verschiedene Arten testen kann, aber ich versuche, die Eigenschaftsformel zu verstehen. Ich versuche, Sie in verschiedenen Fragen zu fragen: Was wäre, wenn ich (in vba.msgBox) den ersten Formelausdruck im Bereich von Zellen ausgeben möchte ("A1: X1000") sagen wir nur Zelle B14 hat eine Formel in es und andere Zellen in diesem Bereich sind leer. Vielen Dank –

+0

In diesem Fall wird die Eigenschaft .formula ein Array zurückgeben. der Inhalt der Zelle B14 wäre bei (1,13) oder (2,14) – h2so4

1

Ist das eine Hilfe?

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:

Sie brauchen keine Schleifen. Für den Bereich A1: B2:

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

nicht wirklich. Da .formula die Eigenschaft von range ist, können Sie dies auch mit do while loop (also ohne for-Schleife) definieren. Diese Frage ist mehr in das Verständnis von Excel-Objekt-Modell –

+0

@PavolNamer - Können Sie bitte (in Ihrem OP), klären, was * genau * Sie versuchen zu lernen/herauszufinden? Suchen Sie eine praktische Antwort oder eine Diskussion über die '.Formula'-Eigenschaft der' Range'? Ich nehme an, Sie haben die [Microsoft Info] (https://msdn.microsoft.com/en-us/library/office/ff838835.aspx) gelesen? – BruceWayne

+0

Ja, ich habe weitere Detaildokumentation für .formula-Eigenschaft gefunden und kann sie nicht finden. Ich möchte nur eine tiefere Dokumentation finden, um diese Eigenschaft vollständig zu verstehen. Danke –

Verwandte Themen