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

Forumthread: Fehler bei Makro aus Wenn-Dann-Formel

Fehler bei Makro aus Wenn-Dann-Formel
22.04.2021 13:46:48
Dani
Hallo zusammen,
ich habe ein Problem bei dem ich mir die Zähne ausbeiße und hoffe auf eure Hilfe.
In Zelle C4 habe ich eine Wenn-Dann-Formel (=WENN(C3>0;Start1();"")), die ein Makro auslösen soll, wenn Zelle C3 befüllt ist. Das Ergebnis soll dann in D3 ausgegeben werden. Das Makro dazu sieht so aus:

Public Function Start1()
Call ausfuellenD3
End Function
Sub ausfuellenD3()
Range("D3").Activate
ActiveCell.FormulaLocal = "=SVERWEIS($C$3;Datenquelle!$B$2:$C$25;2;FALSCH)"
End Sub Wenn ich in C3 nun einen Wert eingebe, erscheint in C4 #WERT, D3 bleibt leer. Wenn ich "Sub ausfuellenD3" einzeln ausführe, funktioniert es. Nicht aber über die Wenn-Dann-Formel. Wo liegt hier mein Fehler?
Vielen Dank und viele Grüße
Daniela
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler bei Makro aus Wenn-Dann-Formel
22.04.2021 14:15:46
Nepumuk
Hallo Daniela,
ein Makro welches aus einer Formel aufgerufen wird kann nur die Zelle beeinflussen aus der heraus sie aufgerufen wurde und keine andere.
Es gibt einen Trick mit Evaluate:

Public Function Start1()
Call Evaluate("=ausfuellenD3()")
End Function
Private Sub ausfuellenD3()
Range("D3").FormulaLocal = "=SVERWEIS($C$3;Datenquelle!$B$2:$C$25;2;FALSCH)"
End Sub
Allerdings wird die Formel nicht automatisch berechnet. Dazu musst du noch F9 drücken.
Gruß
Nepumuk
Anzeige
AW: Fehler bei Makro aus Wenn-Dann-Formel
22.04.2021 15:08:35
Daniel
Hi
wie Nepumuk schon schrieb:
Formeln in Zellen dürfen in Excel nichts anderes verändern als den Wert der Zelle selbst.
Das gilt auch auch für alle per VBA geschriebenen Functions und Subs, Sobald sie über eine Excelformel in einer Zelle gestartet werden, greift für sie diese Restriktion.
Ja es gibt diesen Workaround wie von Nepumuk beschrieben, aber hier würde ich einfach die Formel direkt in D3 in dieser Form schreiben:

=Wenn(C3>0;SVerweis(,,,);"")
Gruß´Daniel
Anzeige
AW: Fehler bei Makro aus Wenn-Dann-Formel
23.04.2021 09:55:31
Dani
Hallo Daniel,
wenn es so einfach wäre, dann hätte ich das natürlich gemacht. :'D
Ich wollte mir nur den Umstand ersparen, die Komplikation hier zu beschreiben, warum ich die Formel nicht einfach in die Zelle schreibe, in der das Ergebnis stehen soll.
Die Zellen C3 und D3 sind voneinander abhängig. In C3 soll eine Kundennummer stehen, in D3 der dazugehörige Kunde. Für beide Zellen habe ich ein Listenfeld erstellt. Sodass ich über Dropdown einfach die gesuchte Kundennummer oder den Kunden auswählen kann. Die Gefahr dabei ist aber natürlich, dass ich die beiden nicht passend zueinander eingebe. Oder, dass ich die passende Kundennummer zum Kunden (oder umgekehrt) gerade nicht im Kopf habe. Daher möchte ich, dass bei einer Auswahl in C3 der passende Wert für D3 automatisch erscheint. Das soll aber natürlich auch andersrum funktionieren. Deshalb kann in keinem der beiden Zellen eine Formel stehen, weil die Formel mit einer Auswahl aus dem Listenfeld (oder einer manuellen Eingabe) natürlich weg ist.
Leider funktioniert es auch nicht so wie von Nepumuk beschrieben. Dann steht in C4 Null und in D3 leider immer noch nichts.
Anzeige
AW: Fehler bei Makro aus Wenn-Dann-Formel
23.04.2021 11:42:38
Daniel
Hi
das Problem ist halt, wenn du die Beschreibung des Problems vereinfachst, dann bekommst du in der Regel auch einfache Lösungen, die dann wahrscheinlich zu einfach für dein Problem sind.
wenns nicht zu aufwendig ist, würde ich hier mit 4 Spalten arbeiten
in die ersten beiden gibst du entweder die Kundennummer (1. Spalte) oder den Namen (2. Spalte)
in den Spalten 3 und 4 gibt du dann Kundennummer und Name per Formel aus.
wenn die Kundennummer in Spalte 1 eingegeben ist, übernimmst du sie, wenn das Feld leer ist suchst du die Kundennummer zum eingegebenen Namen in Spalte 2.
Für Spalte 4 dann entsprechend.
also im Prinzip folgende Formel für 3 und 4:
=Wenn(EingabeKD-NR <> ""; EingabeKD_Nr;Wenn(EingabeKD-Name = "";"";Formel zum Suchen der Kundennummer zum Namen))
wenn du das mit nur 2 Spalten machen willst, dann mach das ohne Formel mit Makro, sondern über das Change-Event-Makro.
prüfe hierbei welche Spalte geändert wurde (Target.Column)
wenn Spalte C (Nummer) geändert wurde, dann suchst du zu dieser Nummer den Namen und trägst ihn in die Spalte D in der gleichen Zeile ein
wenn die Spalte D (Name) geändert wurde, suchst du die Nummer zum Namen und trägst ihn in die linke Nachbarspalte ein.
Gruß Daniel
Anzeige
AW: Fehler bei Makro aus Wenn-Dann-Formel
26.04.2021 10:10:48
Dani
Hallo Daniel,
danke dir für deine Mühen! Meiner Erfahrung nach sind meine Gedanken manchmal etwas wirr für andere. Daher versuche ich mich dann aufs Wesentliche zu beschränken. War aber auch mein erster Forenbeitrag überhaupt. Fürs nächste Mal mache ich es komplizierter. ;-)
Ich zwischenzeitlich so lange herumgebastelt, bis ich es passend hatte.
In Tabelle 1 habe ich jetzt Folgendes:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$3" Then
If Target.Value  0 Then
If Range("D3") = "" Then
Call ausfuellenD3
End If
End If
End If
If Target.Address = "$D$3" Then
If Target.Value  0 Then
If Range("C3") = "" Then
Call ausfuellenC3
End If
End If
End If
End Sub
Und in Modul1 dann:
Sub ausfuellenD3()
Range("D3").FormulaLocal = "=SVERWEIS($C$3;Datenquelle!$B$2:$C$25;2;FALSCH)"
Range("D3").Copy
Range("D3").PasteSpecial (xlPasteValues)
Application.CutCopyMode = False
End Sub Sub ausfuellenC3()
Range("C3").FormulaLocal = "=SVERWEIS($D$3;Datenquelle!$A$2:$B$25;2;FALSCH)"
Range("C3").Copy
Range("C3").PasteSpecial (xlPasteValues)
Application.CutCopyMode = False
End Sub So funktioniert es bei mir perfekt! Vielleicht hilft es ja nochmal jemandem mit demselben Problem.
Herzlichen Dank und einen schönen Start in die Woche!
Gruß
Daniela
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige