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

Makro - Formelanpassung - @operator

Forumthread: Makro - Formelanpassung - @operator

Makro - Formelanpassung - @operator
06.03.2025 15:23:39
Patrick_Arbeit
Schönen guten Tag,

ich habe folgendes Problem, dass das Makro zwar funktioniert und die Formel einfügt jedoch vor den 'Ablaufplan Jahr'! jeweils ein @ vorsetzt und somit die Formel leider immer einen Fehler ausweist.

Könnt ihr mir helfen, wie ich das Makro umbauen muss damit es funktioniert?

Sub Plan()

Dim cell As Range
Dim spalte As String
Dim bereich As Range
Dim letzteZeile As Long


Application.ScreenUpdating = False
SchutzAufhebenAktiv


letzteZeile = Worksheets("Ablaufplan Jahr").Cells(Rows.Count, "C").End(xlUp).Row


Dim bereiche As Variant
bereiche = Array("D8:J22", "D25:J64", "D67:J76")


For Each b In bereiche
Set bereich = Range(b)


For Each cell In bereich
If Range("B" & cell.Row).Value > "" And IsEmpty(cell.Value) Then

spalte = Split(cell.Address, "$")(1)


cell.Formula = "=INDEX(Tabelle2[Funktion], MATCH(1,('Ablaufplan Jahr'!$C$2:$C$" & letzteZeile & " = " & spalte & "$4) * ('Ablaufplan Jahr'!$D2:$D" & letzteZeile & " = $A" & cell.Row & "), 0))"


If Not IsError(cell.Value) Then
If IsNumeric(cell.Value) Or cell.Value = "" Then
cell.ClearContents
End If
End If
End If
Next cell
Next b


Application.ScreenUpdating = True
SchutzAktivierenAktiv
End Sub


https://www.herber.de/bbs/user/176157.xlsx

Lieben Dank im Voraus
Patrick
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Makro - Formelanpassung - @operator
06.03.2025 15:29:58
Onur
Aber warum postest du eine XLSX-Datei ohne das Makro ? Do It Yourself?
AW: Makro - Formelanpassung - @operator
06.03.2025 19:54:08
Yal
Hallo Patrick,

deine Datei ist mit anderen verbunden, sodass ein Test nicht möglich ist.
Die Antwort ".Formula2" hast Du schon bekommen. Jetzt das überflüssige: dein Code könnte so aussehen:

Sub Plan()

Dim Z As Range 'Z wie Zelle- Laufvariablen sind meistens 1-stellig
Dim rngC As String
Dim rngD As String

Application.ScreenUpdating = False
SchutzAufhebenAktiv
With Worksheets("Ablaufplan Jahr").Cells(Rows.Count, "C").End(xlUp)
rngC = "'Ablaufplan Jahr'!$C$2:$C$" & .Row
rngD = "'Ablaufplan Jahr'!$D$2:$D$" & .Row
End With
For Each Z In Range("D8:J22,D25:J64,D67:J76")
If Cells(Z.Row, "B").Value > "" And IsEmpty(Z.Value) Then
Z.Formula2 = "=INDEX(Tabelle2[Funktion], MATCH(1,(" & rngC & " = " & Cells(4, Z.Column).Address(0, 1) & ") * (" & rngD & " = " & Cells(Z.Row, 1).Address(1, 0) & "), 0))"
If Not IsError(Z.Value) Then If IsNumeric(Z.Value) Or Z.Value = "" Then Z.ClearContents
End If
Next Z
Application.ScreenUpdating = True
SchutzAktivierenAktiv
End Sub

Ich mag keine leere Zeile, weil diese nicht zur Lesbarkeit beitragen.
Variable "Bereich" und Bereiche" ist gut: Deutsch für Variablen macht die Trennung zu sonstige VBA-Code. Aber "cell" ?..
Je weniger Variable, desto besser. Ausnahme: während der Entwicklung, um besser zu testen (lokal-Fenster)

VG
Yal

Anzeige
AW: Makro - Formelanpassung - @operator
07.03.2025 13:30:18
Patrick_Arbeit
Guten Tag an alle,

besten Dank für eure Unterstützung.
Ich bin noch VBA-Anfänger und daher dankbar für die Erklärungen und Unterstützungen.
@Onur ich benötige es, da es für die Dienstplangestaltung bei uns benötigt wird, die jede Woche bearbeitet wird.

Beste Grüße
Patrick
Anzeige
@Onur: sorry, verrutscht
06.03.2025 19:59:12
Yal
meine Antwort war eigentlich direkt an Patrick gedacht, keine Frage.
Bin müde, ich mache Feierabend ;-)

VG
Yal
AW: Makro - Formelanpassung - @operator
06.03.2025 15:44:04
Onur
Beschreibe doch mal, was die Formel berechnen soll und warum du die Formel unbedingt per VBA eintragen willst und nicht händisch.
Dann schreibe...
06.03.2025 16:46:26
Case
Moin, :-)

... statt: ;-)
cell.Formula

Das: ;-)
cell.Formula2

Und schau dir die Links an:
https://learn.microsoft.com/de-de/office/vba/excel/concepts/cells-and-ranges/range-formula-vs-formula2?WT.mc_id=M365-MVP-33461
https://support.microsoft.com/de-de/office/impliziter-schnittmengenoperator-ce3be07b-0101-4450-a24e-c1c999be2b34

Ob das mit deiner Version klappt, musst du probieren. ;-)

Servus
Case
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige