Tut .Wert = .Wert handeln ähnlich Evaluate () - Funktion in VBA?

Betrachten Sie den folgenden Codeausschnitt. Es meint die gleiche Formel in zwei Zellen A1 und A2

Sub Main()
    With Range("A1")
        .Formula = "=1+1"
    End With

    With Range("A2")
        .Formula = "=1+1"
        .Value = .Value
    End With
End Sub

Zweiten with block verwendet .Value = .Value berechnet/ausgeführt wird die Formel daher die Formel verschwindet aus der Formel bar. Finden Sie ausblenden von Formeln aus dem Formel-bar für eine unterstützende Referenz.

Tut .Wert = .Wert handeln ähnlich Evaluate () - Funktion in VBA?

Fügen Sie nun ein weiteres mit block

With Range("A3")
     .Formula = "=1+1"
End With
Range("A4") = Evaluate(Range("A3").Formula)

Fügen Sie eine Formel in die Zelle A3 dann, dass die neue Zelle die Formel wird Evaluated() in eine andere Zelle A4. Die Ergebnisse, wie gezeigt,

Tut .Wert = .Wert handeln ähnlich Evaluate () - Funktion in VBA?

Ich denke, der oben genannten Art zeigt, dass .Value = .Value und Evaluate() tun die gleiche Sache.

Jedoch Den code unten zieht Werte aus einer geschlossenen Arbeitsmappe mit den beiden genannten Ansätzen. Habe ich eine Arbeitsmappe book9.xlsm für dieses Beispiel mit einem hello setzen Sie in Zelle A1. book9.xlsm ist der, den ich ziehen die A1's Wert. Betrachten Sie den code

Sub PullValue()
    With Range("A1")
        .Formula = "='C:\Users\admin\Desktop\[book9.xlsm]Sheet1'!A1"
    End With

    With Range("A2")
        .Formula = "='C:\Users\admin\Desktop\[book9.xlsm]Sheet1'!A1"
        .Value = .Value
    End With

    Range("A3").Formula = "='C:\Users\admin\Desktop\[book9.xlsm]Sheet1'!A1"
    Range("A4") = Evaluate(Range("A3").Formula)
End Sub

Den ersten with block stellt eine Formel in der Zelle A1 Wert aus einer book9.xlsm. Es wird ausgeführt, deshalb der abgezogene Wert ist hello aber die Bearbeitungsleiste zeigt den tatsächlichen .Formula die C:\....

Zweiten with block verwendet die .Value = .Value wie oben dargelegt, ist für die Auswertung der Rezeptur-und ausblenden der Formel durch ersetzen mit dem Ergebnis.

Range("A3") ist die gleiche wie die erste with block.

Und jetzt (A4) ich bin nach dem gleichen Prinzip wie das erste Beispiel(erste Schnipsel, der in dieser Frage) zu Evaluate() die Formel, aber Es funktioniert nicht in dieser Zeit.

Finden Sie alle aktivierten Zellen, die Werte und die Formel bar für jedes

Tut .Wert = .Wert handeln ähnlich Evaluate () - Funktion in VBA?

So, jetzt, ich kann nicht sagen, dass .Value = .Value gleich Evaluate().

Den Bemerkungen von Evalutate() sagen, dass es verwendet werden kann mit Formeln. Aber in dem Beispiel habe ich gezeigt, dass es nicht funktioniert.

Tut .Wert = .Wert handeln ähnlich Evaluate () - Funktion in VBA?

Sind die Formeln verwendet, die als Parameter in Evaluate() beschränkt? Ich habe immer gedacht, dass zu Bewerten ist sehr mächtig, aber es stellt sich heraus, dass .Value = .Value tatsächlich ist sogar noch stärker. Obwohl Sie sehr ähnlich sind Sie irgendwie anders sind ( aber ich überlege, es könnte meine Schuld sein, wie die Formel, die ich wählte für dieses Beispiel eingeschränkt werden kann oder eingeschränkt ). Ich denke, ich habe gezeigt, welche macht Sie zwei gleiche und verschiedene zur gleichen Zeit. Es ist immer noch wie 50%/50% und ich kann nicht genau sagen, ob Sie gleich sind oder nicht. Es wäre toll, wenn jemand in der Lage war, zu erklären, was hier fehlt.

Ich habe rollte wieder deine Bearbeitung. Bitte nicht radikal ändern, die Bedeutung der Beiträge, vor allem, wenn man nur "raten", was die Frage ist. Siehe diese meta-Diskussion für weitere details.
Evaluate() schlägt fehl, wenn die referenzierte Zelle in einer geschlossenen Arbeitsmappe habe ich Angst. Wenn Sie öffnen Sie die referenzierten Buch dann funktioniert es wieder gut. Es ist die Art und Weise Bewerten, die Funktion funktioniert, kann es nicht Lesen aus einem geschlossenen Buch.

InformationsquelleAutor | 2013-07-19

Schreibe einen Kommentar