Excel Makro Diffrenz

Ich möchte ein Makro schrieben, das ein Wert1 vom Wert2 subtrahiert werden soll. Das könnte man zwar auch mit einer Formel in der Zelle erledigen, aber es soll in der Zelle keine Formel sondern eine Zahl stehen. Geht das?

Hallo, Anne!

Ich möchte ein Makro schrieben, das ein Wert1 vom Wert2
subtrahiert werden soll. Das könnte man zwar auch mit einer
Formel in der Zelle erledigen, aber es soll in der Zelle keine
Formel sondern eine Zahl stehen. Geht das?

Das geht. Z. B. so:

Tabelle1.Range(„C1“)=Tabelle1.Range(„A1“)-Tabelle1.Range(„B1“)

Dann gerne auch ergänzt mit Schleifen, anderen Adressen uws…

Gruß, Manfred

Hallo Manfred,

danke! Ich habe bei „Code anzeigen“ nun ergänzt:
Public Function diff(Wert1, Wert2)
Tabelle1.Range(„L“) = Tabelle1.Range(„M“) - Tabelle1.Range(„N“)
End Function

aber es tut sich gar nichts. Wie kann ich das Makro auslösen? Wie erreiche ich die Differenz für die ganze Spalte, allerdings nur beim ersten Auslösen, nicht dass es immer wieder neue Differenzne bildet?

Gruss
Anne

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo, Anne!

danke! Ich habe bei „Code anzeigen“ nun ergänzt:
Public Function diff(Wert1, Wert2)
Tabelle1.Range(„L“) = Tabelle1.Range(„M“) -
Tabelle1.Range(„N“)
End Function

Gut, schmeiß Deine Funktion raus und ersetze sie durch

Sub Diff()
 Dim lngZeile As Long

 lngZeile = 1
 Do While IsNumeric(Tabelle1.Cells(lngZeile, 13).Text) And IsNumeric(Tabelle1.Cells(lngZeile, 14).Text)
 ' falls Du nur neu berechnen willst, falls noch nix drin steht
 If Tabelle1.Cells(lngZeile, 12) = "" Then
 Tabelle1.Cells(lngZeile, 12) = Tabelle1.Cells(lngZeile, 13) - Tabelle1.Cells(lngZeile, 14)
 End If
 lngZeile = lngZeile + 1
 Loop
End Sub

Aufrufen kannst Du das dann mit Extras-Makros-Makro auswählen und „Ausführen“.

Gruß, Manfred

Hallo Manfred,

das sieht schon gut aus! Ist ingZeile die Zeilenummer? Was sind dann 12,13,14? Wo sag ich ihm welche Spalten subtrahiert werden sollen und wo das Ergebnis hinkommt?

Gruss
Anne

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi, Anne!

das sieht schon gut aus! Ist ingZeile die Zeilenummer? Was

Ja.

sind dann 12,13,14?

Das sind die Spalten. L=12, M=13, N=14

Wo sag ich ihm welche Spalten subtrahiert
werden sollen und wo das Ergebnis hinkommt?

Eben über die entsprechende Anpassung der Spalten.

Gruß, Manfred

das sieht schon gut aus! Ist ingZeile die Zeilenummer? Was
sind dann 12,13,14? Wo sag ich ihm welche Spalten subtrahiert
werden sollen und wo das Ergebnis hinkommt?

Hi Anne,
im VB-Editor auf F1 klicken, nach Cells suchen…
Gruß
Reinhard

Danke euch, ich probiere es demnächst aus! Komme gerade nicht dazu. :frowning:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Also, als Makro habe ich:
Sub Diff()
Dim lngZeile As Long

lngZeile = 6
Do While IsNumeric(Tabelle1.Cells(lngZeile, 13).Text) And IsNumeric(Tabelle1.Cells(lngZeile, 14).Text)
’ falls noch nix drin steht
If Tabelle1.Cells(lngZeile, 12) = „“ Then
Tabelle1.Cells(lngZeile, 12) = Tabelle1.Cells(lngZeile, 13) - Tabelle1.Cells(lngZeile, 14)
End If
lngZeile = lngZeile + 1
Loop
End Sub

Es steht nur in Zelle L10=7, M10=4 und L11=5 und M11=6, wenn ich auf Ausführen klicke, passiert leider gar nichts, jetzt müssten doch die Ergebnisse in N10 und N11 geschrieben werden, oder?

Hallo, Anne!

Es steht nur in Zelle L10=7, M10=4 und L11=5 und M11=6, wenn
ich auf Ausführen klicke, passiert leider gar nichts, jetzt
müssten doch die Ergebnisse in N10 und N11 geschrieben werden,
oder?

Du musst schon die Spalten ein wenig anpassen, so wie Du sie brauchst.

In Deinem Posting ungefähr vier weiter oben schriebst Du was von „Range(L)=Range(M)-Range(N)“, also L=M-N. Entsprechend sind die Spalten in dem Makro gesetzt: Wenn Zahl in Spalte 13 (M) und Zahl in Spalte 14 (N), dann schreibe in Spalte 12 (L) die Differenz.

Wenn Du jetzt mit einem Mal die Differenz von L und M in N haben willst, musst Du das Makro entsprechend anpassen…

Gruß, Manfred

Hallo Manfred,

ja, entschuldige bitte, das war ja blöd von mir! Aber jetzt habe ich alles in die Spalten M,N verschoben, gespeichert, ausführen…L bleibt leer!

Hallo, Anne!

ja, entschuldige bitte, das war ja blöd von mir! Aber jetzt
habe ich alles in die Spalten M,N verschoben, gespeichert,
ausführen…L bleibt leer!

Schick mal die Datei vorbei, das wird schneller gehen. Schreib noch kurz, in welcher Tabelle Du in welcher Spalte die Differenz aus welchen Spalten haben möchtest…

Gruß, Manfred