In Excel Zellwert mit 1 addieren?
Hallo. Ich möchte in Excel 2016 den Wert der Zellen H4 bis H26 jeweils mit 1 addieren und in den gleichen Zellen eintragen.
Diess Makro funktioniert nicht:
Range("H4:H26").Value = Range("H4:H26").Value + 1
Es kommt immer Laufzeitfehler 13.
Wenn ich es nur für eine Zelle mache, geht es
Range("H4").Value = Range("H4").Value + 1
3 Antworten
Bau dir einfach eine Schleife, die jeden Zellwert im Bereich um 1 erhöht.
Sub PlusEins()
Dim i As Integer
For i = 4 To 26 Step 1
ActiveSheet.Cells(i, 8).Value = ActiveSheet.Cells(i, 8).Value + 1
Next i
End Sub
Um meine Neugier zu befriedigen würde mich aber auch noch interessieren, warum mein Makro mit einer Zelle funktioniert, nicht aber mit mehreren.
Du kannst immer nur den Wert EINER Zelle manipulieren, nicht - ohne weiteres - den eines ganze Bereichs.
Daher musst Du, wie in meinem Makro oder dem von DeeDee, mit einer Schleife (For oder For Each) jede Zelle einzeln ansprechen und um 1 erhöhen.
Wenn es unbedingt ein Makro sein muss, dann:
Sub EinsAddieren()
Dim Zelle As Range
Dim Bereich As Range
Set Bereich = Range("H4:H26")
For Each Zelle In Bereich
Zelle = Zelle + 1
Next Zelle
End Sub
Es geht aber auch ganz einfach mit "Bordmitteln":
- Schreib in irgendeine freie Zelle eine 1.
- Kopiere diese Zelle
- Markiere den gesamten Bereich H4:H26 ("Ameisen" um die 1 laufen noch)
- Rechtsklick in den Bereich
- Inhalte einfügen / Inhalte einfügen... --> Vorgang: "Addieren"
- OK
Fertig.
Klappt es?
Generell ist sowas aber sehr fehleranfällig und deshalb gefährlich: Du kannst später nicht mehr kontrollieren, wie oft Du schon die 1 dazugezählt hast!
Ich empfehle deshalb für beide Makro-Varianten das:
Zelle.Formula = Zelle.Formula & "+1"
Das klappt aber nicht, wenn schon nur eine Zahl drinsteht. Du musst die Ausgangszahl also mit ++Zahl, --Zahl oder =Zahl eingeben (in Librte Office geht ++Zahl nicht, das wird sofort raus"korrigiert". Aber geht ja auch nur eine andere Makrosprache).
Narrensicher wirds (relativ umständlich) mit:
if Hasformula(Zelle) then
Zelle.Formula = Zelle.formula & "+1"
Else
Zelle.Formula = "=" & Zelle.value
end if
(kann sein, dass die Syntax nicht ganz stimmt, müsstest Du prüfen und ggf lt. Hilfe korrigieren)
Hat die Zelle eine Textformel oder eine schon komplexere Formel, können Fehler auftreten, zB lässt sich an =identisch("A";"a") zwar ein +1 anhängen, , aber da wird dann aus dem Ergebnis Falsch (=0) ein WAHR und WAHR (=1) bleibt WAHR, denn 2 ist auch WAHR.
Wenn es bei einer Zeile geht, kopiere es doch dann einfach.
Danke für die Antwort. Ich hätte vielleicht dazu schreiben sollen: es soll mit einer Schaltfläche umgesetzt werden. Einmal drücken startet das Makro und alle Zellen werden um eins weiter gesetzt. Copy/Paste bringt mich da also nicht weiter.
Danke sehr! Das funktioniert!
Mit Cells() hatte ich es auch schon versucht, dabei aber für die Spalte H die Ziffer 7 genommen, ich Depp. Da waren gar keine Zahlen drin :-)
Um meine Neugier zu befriedigen würde mich aber auch noch interessieren, warum mein Makro mit einer Zelle funktioniert, nicht aber mit mehreren.