Excel Variable Range angabe?

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


Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)
PWolff  21.09.2022, 15:07

Besser noch:

MsgBox "Bitte eine Zahl von 1 bis 1048576 für die Zeile eingeben"
0
Oubyi, UserMod Light  21.09.2022, 20:09
@PWolff

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.

1
PWolff  21.09.2022, 20:20
@Oubyi, UserMod Light
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

1
Oubyi, UserMod Light  21.09.2022, 20:40
@PWolff

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.

0

Range("A" & x).Value = "blabla"

Cells(Zeile, Spalte).Value = ...
PWolff  21.09.2022, 15:09

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.

0