Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1912to1916
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro für Formel übertragen

Makro für Formel übertragen
21.12.2022 07:43:55
mike_b
Guten Tag.
Ich habe ein Makro erstellt, welches eine Formel aus der rechten Nachbarzelle in die aktive Zelle überträgt.
Hier einmal der Code vom Makro:

Sub Raum_buchen_rückgängig()
' Raum_buchen_rückgängig Makro
ActiveCell.Offset(0, 1).Range("A1").Select
Selection.AutoFill Destination:=ActiveCell.Offset(0, -1).Range("A1:B1"), Type _
:=xlFillDefault
ActiveCell.Offset(0, -1).Range("A1:B1").Select
ActiveCell.Select
End Sub
Nun ist es leider so, dass es passieren kann, dass die rechte Nachbarzelle leer ist. Dann sollte die Formel aus der übernächsten rechten Zelle übertragen werden. Wenn diese leer ist, sollte die Formel aus der linken Nachbarzelle übertragen werden. Und wenn diese leer ist, dann notfalls aus der übernächsten linken Zelle.
Gibt es eine Möglichkeit, das oben beschriebene Makro zu erweitern? Ich habe es bereits mit verschiedenen Wenn-Dann-Sonst-Funktionen versucht, allerdings leider erfolglos.
Ich wäre für jede Hilfe dankbar!

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro für Formel übertragen
21.12.2022 10:17:30
Rudi
Hallo,
jetzt hab ich eine Weile gebraucht um zu kapieren, dass man deinen Code auf

Sub Raum_buchen_rückgängig()
' Raum_buchen_rückgängig Makro
ActiveCell = ActiveCell.Offset(0, 1)
End Sub
reduzieren kann. ;-)
teste mal:

Sub Raum_buchen_rückgängig()
Dim arrOFFSET, a
arrOFFSET = Array(1, 2, -1, -2)
For Each a In arrOFFSET
If ActiveCell.Offset(, a)  "" Then
ActiveCell = ActiveCell.Offset(, a)
Exit Sub
End If
Next a
End Sub
Gruß
Rudi
AW: Makro für Formel übertragen
21.12.2022 11:22:46
mike_b
Funktioniert leider noch nicht so ganz, wie es sollte, aber geht zumindest in die richtige Richtung.
Vielleicht sollte ich nochmal genauer erklären, welche Gegebenheiten vorliegen.
In der aktiven Zelle wird ursprünglich über eine Wenn-Dann-Sonst- Abfrage ein Inhalt (entweder "P" oder "O") erzeugt. Hier einmal die Formel:
=WENN(T60="U";"P";WENN(T60="F";"P";WENN(T60="T";"P";"O")))
Mithilfe eines Buttons kann diese Zelle mittels Makro (Raum_buchen) in Abhängigkeit vom Inhalt "P" oder "O" neu formatiert werden. Hier einmal der Code:

Private Sub CommandButton6_Click()
If ActiveCell.Value = "P" Then
Raum_buchen
End If
If ActiveCell.Value = "B" Then
MsgBox ("Buchung in der Tabelle eintragen")
End If
End Sub
Bei "O" passiert nichts, bei "P" wird das Makro angewendet. Bei Anwendung des Makros wird ein neuer Inhalt ("B") unabhängig von der ursprünglichen Wenn-Dann-Sonst-Abfrage erzeugt. Die erzeugte Infobox ist hier irrelevant.
Das benötigte Makro (Raum_buchen_rückgängig) beschrieben in meiner ersten Nachricht soll nun mithilfe eines weiteren Buttons ausgeführt werden. Damit soll nun die Wenn-Dann-Sonst-Abfrage aus den Nachbarzellen in die aktive Zelle übertragen werden. Die Reihenfolge so, wie in der ersten Nachricht beschrieben.
Bei deinem Code Rudi, wird auf jeden Fall die Reihenfolge richtig ausgeführt und bringt auch ein Ergebnis, dass in die richtige Richtung geht. Es wird allerdings nicht die Wenn-Dann-Sonst-Abfrage in die aktive Zelle übertragen, sondern lediglich ein "P" oder ein "O", abhängig vom erzeugten Inhalt der Nachbarzelle, kopiert.
Ich hoffe es ist so verständlich und dass du mir noch weiterhelfen kannst.
Anzeige
AW: Makro für Formel übertragen
21.12.2022 11:33:46
Rudi
Hallo,
dann eben

ActiveCell.Formula = ActiveCell.Offset(, a).Formula
Deine Formel würde ich zu
=WENN(ODER(T60={"U"."F"."T"});"P";"O")
verkürzen.
Gruß
Rudi
AW: Makro für Formel übertragen
21.12.2022 12:30:52
mike_b
Jetzt übernimmt er zumindest die Formel, das klappt schon mal.
Einziges Problem ist noch, dass die Formel in jeder Zelle Bezug zu einer unterschiedlichen Zelle nimmt.
Die aktive Zelle nimmt beispielsweise in der Wenn-Oder-Funktion Bezug zu T60, die rechte Nachbarzelle dann zu U60, die übernächste zu V60 usw.
Mit dem Makro wird die Formel allerdings 1:1 so für die aktive Zelle übernommen und passt dies nicht an.
Gibt es hier noch die Möglichkeit, dies anzupassen?
Anzeige
AW: Makro für Formel übertragen
21.12.2022 12:44:01
Rudi
warum sagst du das nicht gleich?

ActiveCell.FormulaR1C1 = ActiveCell.Offset(, a).FormulaR1C1
Gruß
Rudi
AW: Makro für Formel übertragen
21.12.2022 13:57:03
mike_b
Besten Dank, funktioniert jetzt wunderbar!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige