Frage von MichaelG1980, 6

Wie kann ich diesen Code anpassen das er das über die ganze Spalte macht ohne das ich den Code jetzt auf 300 Zeillen mehr schreiben muss?

Wie kann ich diesen Code anpassen das er das über die ganze Spalte macht ohne das ich den Code jetzt auf 300 Zeillen mehr schreiben muss?

Wäre über jeden Tip und jede hilfe Dankbar.

Private Sub CommandButton1_Click()
    Worksheets("Tabelle1").Cells(1, 2).Value = Worksheets("Tabelle1").Cells(1, 2).Value + Worksheets("Tabelle1").Cells(1, 5).Value
    Worksheets("Tabelle1").Cells(2, 2).Value = Worksheets("Tabelle1").Cells(2, 2).Value + Worksheets("Tabelle1").Cells(2, 5).Value
    Worksheets("Tabelle1").Cells(3, 2).Value = Worksheets("Tabelle1").Cells(3, 2).Value + Worksheets("Tabelle1").Cells(3, 5).Value
    End Sub
Antwort
von Suboptimierer, 5
Private Sub CommandButton1_Click()
Dim i As Integer
For i = 1 To Range("B1").End(xlDown).Row
Worksheets("Tabelle1").Cells(i, 2).Value = Worksheets("Tabelle1").Cells(i, 2).Value + Worksheets("Tabelle1").Cells(i, 5).Value
Next
End Sub
Kommentar von Suboptimierer ,

Was auch geht und einfacher ist:

Sub KopierenAddieren()
  Dim sel As Range: Set sel = Selection
  Range("E:E").Copy
  Range("B:B").PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd
  sel.Select
End Sub
Antwort
von MichaelG1980, 5

Danke Suboptimierer

Soweit klappt das nur ein Problem habe ich gerade festgestellt. Wenn in, sagen wir B11 nichts steht, wird nichts dazu gezählt? Woran liegt das?

Den ersten Code finde ich besser aber beim 2. klappt das auch mit leeren Zellen.

Gruß Michael

Kommentar von Suboptimierer ,

Dann nimm das zweite Makro.

Um nicht in Zeitschwierigkeiten zu geraten habe ich das erste Makro bis zur ersten Lücke laufen lassen.

Das zweite Makro arbeitet aber hingegen über die gesamte Spalte.

PS: Bitte nutze in Zukunft die Kommentarfunktion. Bei vielen Antworten hätte ich die deine vielleicht gar nicht gefunden. Außerdem sind die Regelungen zur Zeit so, dass eigene Antworten auf eigene Fragen als Punkte-Erschleichen gewertet werden können.

Kommentar von MichaelG1980 ,

Ok das wuste ich nicht. Bin heute neu hier und steige noch nicht ganz so durch.

Ok werde es mit dem zweiten code machen wenn das besser ist.

Vielen Dank

Kommentar von Suboptimierer ,

Du kannst das erste Makro beliebig weit laufen lassen. Pass dazu den Schleifenkopf an:

For i=1 To 32000

Hiermit werden z. B. alle Zeilen von 1 bis 32000 durchlaufen.

Kommentar von MichaelG1980 ,

habe es gerade mal mit dem

For i=1 To 32000
Das ist aber mal gar nichts da der ewig läuft bei testweis 3200 Zeillen dann doch lieber den 2. Code

Vielen Dank

Kommentar von Suboptimierer ,

Es gibt noch Tricksereien. Zum Beispiel kann man die  Bildschirmaktualisierung deaktivieren.

Private Sub CommandButton2_Click()
  Dim i As Integer
  On Error GoTo ende
  Application.ScreenUpdating = False
  For i = 1 To 32000
    Worksheets("Tabelle1").Cells(i, 2).Value = Worksheets("Tabelle1").Cells(i, 2).Value + Worksheets("Tabelle1").Cells(i, 5).Value
  Next
ende:
  Application.ScreenUpdating = True
  On Error GoTo 0
End Sub

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten