Excel Variable Range angabe?
Hallo, ich hätte eine Frage bezüglich Excel VBA:
Ich versuche folgendes zu erreichen:
Damit soll der Zellinhalt von (in dem Fall) Zelle A1 geändert werden.
Wenn man "x = 2" verwendet, dann soll der Inhalt in Zelle A2 geändert werden usw.
Gibt es da eine Spezielle Syntax oder geht es gar nicht so?
Danke für eure Hilfe!
3 Antworten
Du musst den Wert von x ja irgendwo eingeben. SO ginge es beispielsweise:
Private Sub CommandButton1_Click()
Cells(Me.Range("A1"), 1).Value = "Neuer Wert"
'In A1 ist die Zeile angegeben, die geändert werden soll.
End Sub
Vielleicht kannst Du das ja anpassen, sonst frage nochmal nach.
P.S.: Oder Du fragst die Zeile innerhalb des Codes ab:
Private Sub CommandButton1_Click()
Dim i As Integer
i = InputBox("Welche Zeile?:", "Zeile eingeben")
Cells(i, 1).Value = "Neuer Wert"
End Sub
Da müsste aber ggf. noch ein Error abgefangen werden.
P.P.S:
Private Sub CommandButton1_Click()
Dim i As Integer
On Error GoTo Errorhandler
i = InputBox("Welche Zeile?:", "Zeile eingeben")
Cells(i, 1).Value = "Neuer Wert"
Exit Sub
Errorhandler: MsgBox "Bitte eine ZAHL für die Zeile eingeben"
End Sub
DH!
Ok, dann aber auch i als Long definieren.
Aber ich bin einfach mal von "normalen" Umständen ausgegangen.
Die Texte sind eh nur Beispiele und natürlich frei anpassbar.
i als Long definieren
Das ist noch ein weiterer Punkt: Anscheinend wird hier
Option Explicit
nicht verwendet - damit sind alle Variablen Variants mit allen damit zusammenhängenden Nachteilen, zuzüglich fehlender Prüfung auf Tippfehler
Ok "Option Explicit" ist bei mir Standard und steht automatisch immer als erste Zeile Im VBA-Editor.
Dazu habe ich unter "Extras/ Optionen --> Variablen Deklaration erforderlich" aktiviert.
Da es nicht zum Sub gehört, hatte ich es nicht mit aufgeführt, aber ist natürlich wichtig.
Gut, dass Du darauf hinweist.
Range("A" & x).Value = "blabla"
Cells(Zeile, Spalte).Value = ...
Natürlich könnte man auch mit INDIREKT arbeiten oder mit
Range("A" & Format(x)).Value = ...
aber ich halte es für schlechten Stil, eine Zahl in einen Text umzuwandeln, der nachher doch nur wieder in dieselbe Zahl umgewandelt wird.
Besser noch: