AW: VBA Makro optimieren und einzukürzen!
23.02.2024 18:35:22
Firmus
Hi Eberhard,
dein letzter Eintrag ist kurz nach deinem letzten Beitrag im Archiv verschwunden.
Shit happens.
Hier der Link in das Archiv: https://www.herber.de/forum/archiv/1964to1968/1964703_Summe_bilden_in_andere_Tabelle_einfuegen.html
Ich hatte dort noch ein Makro hochgeladen: https://www.herber.de/bbs/user/167115.xlsm
Dein aktueller Eintrag ist nicht gut nachvollziehbar.
"Es sollen immer zwei Werte in einer Tabelle (Ta_2023) addiert werden, dann das Ergebnis in eine andere Tabelle (Ta_2024) übertragen werden."
TA_2023 enthält:
Wasseruhr 1 Wasseruhr 2 Elektro-Zähler 1 Elektro-Zähler 2 xxxxxx
1. Welche zwei dieser Werte (Zellen) sollen addiert werden?
2. Sollen jeweils immer Werte aus der gleichen Zeile addiert werden?
3. Stehen weiter arithmetische Aktionen an, z. B. Abgleich mit Vorjahren?
TA_2024 enthält:
Elektro-Zähler 1 Elektro-Zähler 2 Vorjahresverbrauch Vorjahresverbrauch
3. In welche Zelle in Ta_2023 soll das Ergebnis der Addition von den zwei Werten aus Ta_2024 geschrieben werden?
Die generelle Fragen
4. Warum arbeitest du mit zwei WORKBOOKs, bist aber auf zwei WORKSHEETS fokusiert?
Die beiden Worksheets waren doch bisher in einem Workbook.
5. warum müßte diese Zeile im Makro 100 mal geschrieben werden?
ThisWorkbook.Sheets("Ta_2024").Range("e6").Value = WorksheetFunction.Sum(Sheets("Ta_2023").Range("A6:B7"))
6. Zeige bitte 4-5 Zeilen auf, die dann im Makro stehen würden.
Davon läßt sich vermutlich ableiten wie eine Schleife aussehen sollte.
Hier der Ausschnitt aus dem bisher gelieferten Makro (jetzt im Archiv).
'-----------------------------------------------------------------
' Variante -3
' Diese Variante
' a) prüft die Zellen auf numerische Werte und
' b) addiert zeilenweise die beiden Werte aus Ta_2023 in Ta_2024.
'-----------------------------------------------------------------
MsgBox "Variante drei!"
wbkInUse.Activate
'==========================================================================
' Werte in Spalte "A" und Spalte "B" auf numerisch prüfen.
'==========================================================================
For i = 1 To 10
If wbkInUse.Sheets(wshIN).Cells(i, "B").Value > "" Then
tmpC1 = wbkInUse.Sheets(wshIN).Cells(i, "A").Value
tmpC2 = wbkInUse.Sheets(wshIN).Cells(i, "B").Value
If Not IsNumeric(tmpC1) Or Not IsNumeric(tmpC2) Then
MsgBox "Die Daten in Spalte 'A' und/oder 'B', Zeile " & i & " sind nicht alle numerisch" & Chr(13) & Chr(10) & " - Exit Sub."
Exit Sub
End If
End If
Next i
For i = 1 To 10
If wbkInUse.Sheets(wshIN).Cells(i, "B").Value > "" Then 'geprüfte Zellen jetzt addieren
tmpN1 = wbkInUse.Sheets(wshIN).Cells(i, "A").Value
tmpN1 = wbkInUse.Sheets(wshIN).Cells(i, "B").Value + tmpN1
wbkInUse.Sheets(wshOUT).Cells(i, "D").Value = tmpN1
End If
Next i
Gruß
Firmus