Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro Wert subtrahieren aktiver Spalten/Zellen

Forumthread: Makro Wert subtrahieren aktiver Spalten/Zellen

Makro Wert subtrahieren aktiver Spalten/Zellen
21.05.2024 14:35:25
Macy
Hallo zusammen!

Ein blutiger Anfänger sucht Hilfe. Screenshot anbei. Folgende Situation:
Ich möchte Anfangs- und Endzeit eingeben und die Stunden werden einer Zelle gutgeschrieben und dort immer wieder addiert. So sehe ich am ende wieviele Stunden ich an Auftrag X verbracht habe. Ich habe Pro Zeile ein Button mit dem entsprechenden Makro eingebaut. Das funktioniert soweit, wie ich es wünsche.

Allerdings, möchte ich jetzt sagen wir mal, 500 Aufträge anlegen. Ich müsste jetzt per Hand die Zeile Copy & Paste (500mal!) erstellen, jeden Button das Modulscript öffnen und B, C und D die Nummer anpassen. Dies ist sehr mühselig. Gibt es nicht die Möglichkeit, z.B wenn ich den Button drücke zu prüfen in welcher Zeile der Button ist, die korrekten Spalten C & D werden subtrahiert und der entsprechenden Spalte B addiert? Oder vorher die Zeile kurz irgendwo anzuklicken, dann den Button und er löst das Event aus?

Auf diese Art könnte ich den Button einfach per Copy & Paste zig mal duplizieren und das Script ändert sich nicht da er immer die aktive Zeile nutzt und ich es auf C, D und B beschränken kann statt "C3-500, D3-500 und B3-500".

"Stand JETZT" geschieht folgendes:
- B3 (Gesamt Stundenangabe)
- C3 und D3 (Wert von C3 wird von D3 abgezogen -> Ergebnis wird B3 gutgeschrieben
- C3 und D3 werden die Werte gelöscht

Hierzu benutze ich folgendes Makro:
Sub Zellcal()

With Sheets("Tabelle1")
.Range("B3") = .Range("B3") + Range("D3").Value - Range("C3").Value
.Range("C3").Select
Selection.ClearContents
.Range("D3").Select
Selection.ClearContents
End With
End Sub


Ich hoffe ich habe mich nicht zu kompliziert ausgedrückt und der eine oder andere hat eine Idee oder ähnliches :)

Danke euch im voraus!

Userbild

VG Macy
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Wert subtrahieren aktiver Spalten/Zellen
21.05.2024 15:02:44
Kuwer
Hallo Macy,

Sub Zellcal()

With Rows(ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row)
.Cells(2).Value = .Cells(4).Value - .Cells(3).Value
.Cells(3).Resize(, 2) = ""
End With
End Sub


Gruß, Uwe
AW: Makro Wert subtrahieren aktiver Spalten/Zellen
21.05.2024 15:26:34
Macy
Hallo Uwe!

Vielen lieben Dank. Das passt soweit! Einzig: Wenn ich den Button erneut drücke, löscht er mir den Addierten Wert in Spalte B wenn die Felder leer sind und addiert diese auch nicht. Er setzt es halt immer wieder zurück. Gibt es hierzu noch eine Lösung? Es muss halt jedesmal der Wert addiert werden so das ich am Ende die Gesamtstunden habe.

VG Marcel
Anzeige
AW: Makro Wert subtrahieren aktiver Spalten/Zellen
21.05.2024 15:34:13
Kuwer
Hallo Marcel,

das hättest Du auch selbst ergänzen können: ;-)

Sub Zellcal()

With Rows(ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row)
.Cells(2).Value = .Cells(2).Value + .Cells(4).Value - .Cells(3).Value
.Cells(3).Resize(, 2) = ""
End With
End Sub


Gruß, Uwe
Anzeige
AW: Makro Wert subtrahieren aktiver Spalten/Zellen
21.05.2024 15:17:44
schauan
Hallöchen,

folgende Vorgehensweise:
--> fixiere oben eine oder mehrere Zeilen und setze dort einen Button hin
--> selektiere eine Zelle
--> nimm statt .Range("B3") dann .Cells(Activecell.Row,2)

Im Makro prüfst Du ggf. noch, ob
--> Du mindestens in Zeile 3 bist --> If ActiveCell.Row >= 3 ...
--> eventuell, ob Du nicht zu weit unten bist
--> ob in C3 und D3 was steht, sonst macht das ggf. keinen Sinn --> If .Cells(Activecell.Row,3) > "" and .Cells(Activecell.Row,4) > "" ...
--> und eventuell, ob in C3 und D3 auch numerische Werte stehen
--> und eventuell, ob D3 größer C3 ist - falls Du keine Arbeit über Mitternacht hast
--> und wer weiß, was noch :-)


Anzeige
AW: Makro Wert subtrahieren aktiver Spalten/Zellen
21.05.2024 15:28:40
Macy
Hallo schauan,

dir auch lieben Dank! Das vorgehen ist absolut logisch für mich, doch ohne Vorlage kann ich das leider nicht alleine umsetzten. Obwohl die Ein-Button Lösung richig Interessant ist. Dafür bin ich aber noch zu frisch :))

VG Macy
AW: Makro Wert subtrahieren aktiver Spalten/Zellen
21.05.2024 15:54:23
schauan
Hallöchen,

ohne die ganzen Prüfungen wäre es so, also einfach erst mal das mit dem B3 durch meinen ersten Vorschlag ersetzt.:

Sub Zellcal()

With Sheets("Tabelle1")
.Cells(Activecell.Row, 2) = .Cells(Activecell.Row, 2) + .Range("D3").Value - .Range("C3").Value
.Range("C3").Select
Selection.ClearContents
.Range("D3").Select
Selection.ClearContents
End With
End Sub


Mit zwei der Prüfungen z.B. so

Sub Zellcal()

With Sheets("Tabelle1")
If ActiveCell.Row >=3 And .Range("D3").Value > 0 And .Range("C3").Value > 0 Then
.Cells(Activecell.Row, 2) = .Cells(Activecell.Row, 2) + .Range("D3").Value - .Range("C3").Value
.Range("C3").Select
Selection.ClearContents
.Range("D3").Select
Selection.ClearContents
End If
End With
End Sub


und dieser Stand noch etwas optimiert

Sub Zellcal()

If ActiveCell.Row >=3 And Range("D3").Value > 0 And Range("C3").Value > 0 Then
Cells(Activecell.Row, 2) = Cells(Activecell.Row, 2) + Range("D3").Value - Range("C3").Value
Range("C3").ClearContents
Range("D3").ClearContents
End If
End Sub


1)
With brauchst Du nicht, wenn sicher ist, dass Du Dich auf dem gewünschten Blatt befindest.
2)
Bei With solltest Du konsequenterweise die Punkte auch bei + Range("D3").Value - Range("C3").Value verwenden - hab ich auch beim unoptimierten code gemacht :-)
3)
Man muss nicht immer selektieren
Anzeige
AW: Makro Wert subtrahieren aktiver Spalten/Zellen
22.05.2024 08:42:26
Macy
Hallo ihr zwei!

Klasse! Ich möchte mich ganz herzlich bedanken. Ihr habt mir sehr weitergeholfen!

Beste Grüße,

Macy

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige