Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1824to1828
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

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

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
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

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige