Im Range
Objekt Excel, die Standard-member
ist Value
So SomeVariable = Range("A1")
gleiche ist wie SomeVariable = Range("A1").Value
Ähnlich Range("A1") = SomeVariable
ist die gleiche wie Range("A1").Value = SomeVariable
Sie zu haben natürlich vorsichtig sein, wenn Sie a = Range("Test")
sagen
Wenn Sie versuchen, den Wert aus einem zusammenhängenden Bereich in einer Variant-Variablen zu speichern, z. B. Test
rs zu sagen, A1:A10
, dann werden Sie eine Reihe von Werten
erhalten
Sub Sample()
Dim Myar
Myar = Range("A1:A10").Value
Debug.Print UBound(Myar)
End Sub
Auch in diesem Fall Myar = Range("A1:A10").Value
das gleiche ist wie Myar = Range("A1:A10")
Wenn ich lese/auf einen Bereich zu schreiben, wann Ich verwende nur den Bereichsnamen und wann muss ich range.value verwenden?
Ich bin nicht sicher, was Sie when do I just use the range name
bedeuten tun, aber es spielt keine Rolle, ob Sie .Value
verwenden oder nicht, wenn Sie Lesen/Schreiben von/auf einen Bereich. IMHO, ist es eine gute Praxis zu verwenden .Value
:)
Ist es wichtig, ob der Bereich ist eine Zelle oder mehrere Zellen?
Nein, es ist auch in diesem Fall egal, wenn Sie .Value
verwenden oder nicht.
Ist es wichtig, was der Typ der Variablen ist?
Oh ja! Siehe das obige Array Beispiel
Oder die Art der Daten im Bereich?
Excel-Zellen können verschiedene Arten von Daten speichern. Von Zahlen über Daten bis zu Strings. Da Sie nicht wissen, was dieser Typ sein kann, wird empfohlen, bei der Arbeit mit diesem Typ Variant
zu verwenden. Hier ist ein klassisches Beispiel
Lassen Sie uns sagen Zelle A1
diese Nummer hat 123456789
Jetzt versuchen diesen Code
Sub Sample()
Dim someVariable As Integer
someVariable = Range("A1").Value
Debug.Print someVariable
End Sub
Und jetzt versuchen Sie dieses
Sub Sample()
Dim someVariable As Variant
someVariable = Range("A1").Value
Debug.Print someVariable
End Sub
Edit:
Wie bereits erwähnt von Tim Williams
Mit .Wert auch nützlich ist, "dis-ambiguate" die gemeinsamen "vergessen Set zu verwenden, wenn ein Objektvariable zuweisen" Problem - Dim a: Legen Sie ein = Range ("A1") vs Dim a: a = Bereich ("A1") Im zweiten Fall verdeutlicht immer die Verwendung von .Value das eigentliche Problem -
Nice one Siddharth. Ich mag es auch explizit, '.Value' zu spezifizieren, da es Anfängern beim Lesen des Codes hilft und hilft, mit dem alten Nugget' .Value2' zu differenzieren (siehe hier Raghu http://stackoverflow.com/questions/17359835/what-is-the-difference -zwischen-text-value-and-value2) – CuberChase
Großartige Sachen Siddharth :) Um das obengenannte zu ergänzen, wenn Sie mehr wie ich als Siddharth sind, dann wird die Verwendung von Qualifikationen wie .value, selbst wenn nicht unbedingt notwendig, Ihnen helfen, zu halten Verfolgen Sie, welche Daten Sie erfassen und Fehler beheben möchten, wenn Sie Typ-Mismatch-Fehler erhalten. Ich bevorzuge es auch, die Verwendung von Variant aus dem gleichen Grund zu vermeiden (und für den extrem geringen Vorteil, weniger Speicher zu verwenden). Offensichtlich, wenn Sie nicht regelmäßig diese Fehler gemacht haben, würde ich sagen, dass Siddharths Rat der richtige Weg ist. – puzzlepiece87
Die Verwendung von '.Value' ist auch nützlich, um das allgemeine" vergessen zu verwenden Set bei der Zuweisung einer Objektvariablen "zu" disambiguate "-" Dim a: Set a = Bereich ("A1") 'vs' Dim a: a = Bereich ("A1") 'Im zweiten Fall verdeutlicht die Verwendung von' .Value' das eigentliche Problem –