Zuerst empfehle ich Ihnen dringend, die explizite Deklaration von Variablen in Ihrem Code obligatorisch zu machen. Gehe zu Tools - Optionen, in der Editor Registerkarte überprüfen "Require Variable Deklaration", oder Option Explicit
in der ersten Zeile aller Skripte.
Zweitens, ich denke, es gibt einen kleinen Tippfehler in Ihrem Code, sollte es Sheets.("sheet")
sein.
Um Ihre Frage zu beantworten, vergeben Sie mit range = Sheets("sheet").Range("A1")
eine Wertvariable, kein Objekt. Daher wird die Standardvariable des Bereichsobjekts implizit zugewiesen, dh value
. Um ein Objekt zuzuordnen, verwenden Sie das Schlüsselwort Set
. Mein vollständiger Beispielcode sieht so aus:
Option Explicit
Public Sub Test()
Dim RangeObject As range
Set RangeObject = Sheets("Sheet1").range("A1")
RangeObject.Value = "MyTestString"
End Sub
Dies sollte den Text "MyTestString" in Zelle A1 setzen.
Bearbeiten: Wenn Sie benannte Bereiche verwenden, versuchen Sie RangeObject.Value2
anstelle von RangeObject.Value
. Benannte Bereiche haben keine Value
Eigenschaft.
Die Verwendung von "Variablendeklaration anfordern" wirkt sich nicht rückwirkend auf vorhandene Module aus - es steuert nur, ob Excel Option Explicit automatisch an die Spitze aller * neuen * Module setzt. Selbst wenn Sie diese Option aktivieren, müssen Sie dennoch alle vorhandenen Module durchlaufen und Option Explicit hinzufügen. –
Wenn Sie eine Anzahl von benannten Bereichen haben, nennen wir sie "Name1", "Name2" und "Name3" Ich möchte auf sie wie folgt zugreifen: Set nameRange = Bereich ("Name" & Nummer) und tun Sie Folgendes: If nameRange. Wert <> someValue Dann nameRange.Value = someValue - Das scheitert jedoch! – Karl