Excel: Zellen-Funktionen per VBA anpassen

Hallo,
ich habe eine Tabelle, bei der die Felder einiger Spalten (z.B. H) über Drop-Down-Listen gefüllt werden müssen. Ich möchte jetzt auf die Zellen in anderen Spalten folgendermaßen einwirken. Wird beispielsweise in Zelle H31 der Wert „Wert1“ ausgewählt, dann soll die Formel in Zelle F31 mit einem Faktor versehen werden bzw der Faktor soll sich ändern. Das soll für alle Zeilen eines Bereiches gelten, von mir aus 50-300.

Ich scheitere jetzt ein wenig an der Idee, wie ich das realisieren könnte. Ich habe zwar ein bisschen VBA-Erfahrung, aber es gelingt mir nicht recht, diese Erfahrungen, die ich mit Access gemacht habe, auf Excel zu übertragen.

Wenn jemand eine Idee hat, wie das ohne VBA geht, ohne dass ich irre lange Formeln verwenden muss, dann wäre ich dafür auch sehr dankbar, eine If-Anweisung würde sich ja anbieten, aber die Auswahlliste ist leider recht lang, deshalb würde ich lieber etwas „select case“-artiges verwenden.

Dank und Gruß, Tobias

Wenn jemand eine Idee hat, wie das ohne VBA geht, ohne dass
ich irre lange Formeln verwenden muss, dann wäre ich dafür
auch sehr dankbar, eine If-Anweisung würde sich ja anbieten,
aber die Auswahlliste ist leider recht lang, deshalb würde ich
lieber etwas „select case“-artiges verwenden.

Hallo Tobias,

wie lang kann die Auswahlliste werden?

Kannst du eine Beispielmappe hochladen mit hostarea FAQ:2606

Gruß
Reinhard

Ein Beispiel kann ich aus Geheimhaltungsgründen leider nicht hochladen, die Auswahlliste umfasst so ungefähr 30 Möglichkeiten, es können noch mehr werden. Davon sind aber nicht alle von Interesse, sondern nur wenn bestimmte ausgewählt werden, dann soll etwas geschehen. Ich habe mir schon folgendes überlegt: Wird in dieser Zelle ein Wert ausgewählt, dann werden die zu verändernden Zellen mit den Formeln verändert, natürlich nur in dieser Zeile. Gibt es eine After_Update-Funktion in Excel? Das wäre genau das, was ich suche!

Hallo Tobias,

Ein Beispiel kann ich aus Geheimhaltungsgründen leider nicht
hochladen,

sorry, Kwark, jede Tabelle hab ich doch in sehr wenigen Minuten anonymisiert.

ZB. Namen, Vornamen usw, da sind doch die genauen Namen unwichtig für helfer.
Schreib in A2
Name1
Dann A2 markieren, mit der maus die rechte untere Ecke nach unten ziehen.
Schon haste
Name1
Name2
Name3
usw.

Spalten die für das Problem unwichtig sind kann man löschen.

die Auswahlliste umfasst so ungefähr 30
Möglichkeiten, es können noch mehr werden. Davon sind aber
nicht alle von Interesse, sondern nur wenn bestimmte
ausgewählt werden, dann soll etwas geschehen. Ich habe mir
schon folgendes überlegt: Wird in dieser Zelle ein Wert
ausgewählt, dann werden die zu verändernden Zellen mit den
Formeln verändert, natürlich nur in dieser Zeile. Gibt es eine
After_Update-Funktion in Excel? Das wäre genau das, was ich
suche!

Nein, kein After_Update, aber Worksheet_Change, damit kriegt Vba automatisch mit welche zellen verändert wurden und reagiert dann mit Code.

Gruß
Reinhard

Das mit Worksheet_Change habe ich schon gefunden, das dürfte helfen, ich werde damit mal etwas herumprobieren, danke.

Gruß, Tobias

Hi,

was Du meinst ist ein wohl ein

Private Sub Worksheet_Change(ByVal Target As Range)

das Du im Worksheet anlegst.

Dann legst Du darin eine Prüfung an mit

Private Sub Worksheet\_Change(ByVal Target As Range)
 Select Case Target.Formula
 Case 10
 'Anweisungen...
 Case 30
 'Anweisungen...
 Case Is \> 50
 'Anweisungen...
 Case Else
 'Anweisungen...
 End Select
End Sub

Gruß, Bernd

Das mit Worksheet_Change habe ich schon gefunden, das dürfte
helfen, ich werde damit mal etwas herumprobieren, danke.

hallo Tobias,

wie du willst. Du wolltest aber ggfs. auch eine Lösung ohne Vba.
Die kann man evtl. basteln.
Aber bringt wenig wenn ich mir jetzt ohne kenntnis der Originaltabelle eine beispieltabelle zusammenbastle und das mit reinen Excelformeln hinkriege und du kriegst die Umsetzung in deine tabelle nicht hin oder deine tabellenstruktur ist so daß es so gar nicht funktioniern kann.

Von daher ist eine Beispieltabelle die deine tabellenstruktur wiederspiegelt sehr hilfreich.

Gruß
Reinhard

Grüezi Tobias

ich habe eine Tabelle, bei der die Felder einiger Spalten
(z.B. H) über Drop-Down-Listen gefüllt werden müssen. Ich
möchte jetzt auf die Zellen in anderen Spalten folgendermaßen
einwirken. Wird beispielsweise in Zelle H31 der Wert „Wert1“
ausgewählt, dann soll die Formel in Zelle F31 mit einem Faktor
versehen werden bzw der Faktor soll sich ändern. Das soll für
alle Zeilen eines Bereiches gelten, von mir aus 50-300.

Wenn jemand eine Idee hat, wie das ohne VBA geht, ohne dass
ich irre lange Formeln verwenden muss, dann wäre ich dafür
auch sehr dankbar, eine If-Anweisung würde sich ja anbieten,
aber die Auswahlliste ist leider recht lang, deshalb würde ich
lieber etwas „select case“-artiges verwenden.

Erstelle eine Liste mit deinen Auswahlwerten in der ersten und den faktoren in der zweiten Spalte.

In der Spalte F kannst Du dann statt mit WENN() ganz einfach mit SVERWEIS() auf diese Liste zugreifen und je nach ausgewähltem Wert den Fektor übernehmen mit dem dann weiter gerechnet wird.
VBA ist daszu meines Erachtens keineswegs notwendig.

Die erste Spalte der Liste kannst Du dann in Spalte H gleich als Quelle füt ein DropDown-feld über Daten/Gültigkeit verwenden.

So hast Du dann gleich beide Teile deines Problems elegant abgedeckt.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Das ist tatsächlich eine sehr elegante Lösung und ich werde das mal bei Gelegenheit versuchen, das geht ja vielleicht auch, wenn 3 Faktoren neben einem Namen stehen, die in unterschiedlichen Spalten verwendet werden sollen?

Derzeit habe ich eine VBA-Lösung mit worksheet_change gebaut, das funktioniert so, wie ich mir das vorstelle, und da ich unter Zeitdruck stehe, werde ich die Lösung nicht sofort probieren können sondern mich erst Baustellen zuwenden, an denen es noch gar keine Lösung gibt =)

Gruß, Tobias Eberhardt

Grüezi Tobias

Das ist tatsächlich eine sehr elegante Lösung und ich werde
das mal bei Gelegenheit versuchen, das geht ja vielleicht
auch, wenn 3 Faktoren neben einem Namen stehen, die in
unterschiedlichen Spalten verwendet werden sollen?

Hmmm, überzeugende Lösungs-Konzepte solltest Du primär direkt einbauen und verwenden ohne sie auf die lange Bank zu schieben… :wink:

Derzeit habe ich eine VBA-Lösung mit worksheet_change gebaut,
das funktioniert so, wie ich mir das vorstelle, und da ich
unter Zeitdruck stehe, werde ich die Lösung nicht sofort
probieren können sondern mich erst Baustellen zuwenden, an
denen es noch gar keine Lösung gibt =)

Nur weil ‚VBA‘ draufsteht spricht das noch lange nicht für ‚gute Qualität‘ - jeder User kann eine Fomel-Lösung mit SVERWEIS() nachvollziehen und auch anpassen - mit VBA ist das nicht ganz so einfach möglich.

Aber ich weiss, dass alles Neue erstmal abschreckend wirkt, obschon ich das nicht so recht verstehen kann. Lieber bleibt man auf altbekannten ausgetretenen Pfaden statt neue Dinge mal wirklich ernsthaft in Erwägung zu ziehen.
(Aber das ist eigentlich ein ganz anderes Thema…)

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

jeder User kann eine Fomel-Lösung mit SVERWEIS() nachvollziehen und auch anpassen:

Dann bin ich ja entbehrlich! =o

Spaß beiseite, ich verstehe, was Du meinst, in dem Dokument ist schon ne Menge VBA-Code drin, der nicht von mir stammt. Und wie gesagt, es stehen da noch dringliche Aufgaben an. Es kommt dann meist nicht mehr dazu, dass man es perfekt macht, denn wenn es nach mir ginge, würde ich diese ganze Schweinetabelle in eine Access-Datenbank verwandeln, aber es warten nach den dringlichen Aufgaben schon neue Aufgabe…

Gruß