Alle Zellen eines Range auf einmal ändern

Hallo VBA-ler,

ist es in Excel VBA möglich, den Wert jeder Zelle eines Range um 1 zu erhöhen, ohne eine Schleife zu benutzen?
ich möchte also nicht

For Each zelle in Range("A1:B20")
 zelle Value = zelle.Value + 1
Next zelle

benutzen, sondern so was wie

Range("A1:B20").Value = Range("A1:B20").Value + 1

ich weiß, dass die Syntax so nicht stimmt. Abe geht es irgendwie so ähnlich als Einzeiler?

Danke und Gruß,
Andreas

ist es in Excel VBA möglich, den Wert jeder Zelle eines Range
um 1 zu erhöhen, ohne eine Schleife zu benutzen?

Hallo Andreas,

einzeilig bekam ich nicht hin.

Schreib eine 1 in eine beliebige Zelle, kopier sie mit Strg+c, dann markiere A1:B20, Bearbeiten–Inhalteeinfügen–addieren.
Wenn du dabei den makrorekorder benutzt mußt du nachher nur noch Selection usw. durch deinen Range zu ersetzen.

Gruß
Reinhard

Hallo Reinhard,

danke, die Idee ist nicht schlecht, hat aber einen Nachteil: Wenn ich es genau so mache, wie du beschrieben hast (Quelle = Ziel), kann ich die Zelleninhalte immer nur verdopppeln. Ich könnte allerdings mit einem Hilfs-Range arbeiten, indem lauter einsen stehen.

Gruß, Andreas

Hallo Reinhard,

danke, die Idee ist nicht schlecht, hat aber einen Nachteil:
Wenn ich es genau so mache, wie du beschrieben hast (Quelle =
Ziel), kann ich die Zelleninhalte immer nur verdopppeln. Ich
könnte allerdings mit einem Hilfs-Range arbeiten, indem lauter
einsen stehen.

Hallo Andreas,

„nur verdopppeln“? Wie das?

Sub Makro1()
Range("C1").Value = 1
Range("C1").Copy
Range("A1:B20").PasteSpecial Paste:=xlAll, Operation:= **xlAdd**
Range("C1").ClearContents
End Sub

Gruß
Reinhard

Hallo Reinhard,

das meinte ich doch. Mit einer Hilfszelle (C1) geht es. Wenn ich aber A1:B2 mit xlAdd auf A1:B2 abbilde, kann ich nur verdoppeln: A1 + A1 = 2 x A1.

Gruß, Andreas

das meinte ich doch. Mit einer Hilfszelle (C1) geht es. Wenn
ich aber A1:B2 mit xlAdd auf A1:B2 abbilde, kann ich nur
verdoppeln: A1 + A1 = 2 x A1.

Hallo Andreas,

du wolltest ohne Schleife die Werte in einem Bereich um 1 erhöhen, dafür lieferte ich eine Lösung.

Wenn du auf A1:B20 A1:B20 addierst haste logisch das doppelte.

Es gäbe evtl. eine Lösung ohne Hilfszelle, aber dadurch wird der Code kaum kürzer.

Was stört dich an der Hilfszelle? Auch Profis benutzen je nachdem was sie erreichen wollen Excelfunktionen wie Inhalteeinfügen usw.
Weil Excelfunktionen bis zu 10.000mal schneller sind als Vba!

Das Zusammenwirken von Vba bringt dann die max. Schnelligkeit und Bedienkomfort.

Was genau möchtest du?

Gruß
Reinhard

Hallo Reinhard,

mir ging es eigentlich darum, ob es in VBA so etwas wie eine „Array-Funktion“ gibt, mit der man in einer einzigen Codezeile einen Range von Zellen gleich behandeln kann (z.B. den Wert jeder Zelle um 1 erhöhen). Das scheint es aber nicht zu geben.
Danke für deine Bemühungen und Gruß,
Andreas

hallo Andreas,

mir ging es eigentlich darum, ob es in VBA so etwas wie eine
„Array-Funktion“ gibt,

selbstverständlich kann ich dir einen Einzeiler schreiben, dann ist A1:B20 in dem Array arrBereich.

mit der man in einer einzigen Codezeile
einen Range von Zellen gleich behandeln kann (z.B. den Wert
jeder Zelle um 1 erhöhen).

Das mit einzeilig kannste dir sowieso abschminken, ich zumindest sehe da nix.

Und, Werte, die in in einer Variablen stecken die ein Array darstellen, gleichzeitig zu erhöhen um 1 oder irgendwas, da ist mir auch nichts bekannt.

arrBereich=arrBereich+1 geht nicht.

Der einzige Vorteil, Zellen in ein Array zu überführen um sie dann in einer Schleife Arrayelement für Arrayelement um 1 zu erhöhen ist die Schelligkeit.
Das geht schneller als zelle für zelle abzuklappern, ansonsten isses das Gleiche.

Das scheint es aber nicht zu geben.

Irgendwie nein.

Danke für deine Bemühungen

Gerne.

und Gruß,

dito
Reinhard