Clever-Excel-Forum

Normale Version: Fallabhängige Aus- und Eingabe in der gleichen Zelle
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Excel-Profis,

ich komme mit Excel ziemlich gut zurecht, in VBA bin ich aber ein wenig überfordert. Ich habe ein recht komplexes Exceltool gebastelt, das mit einigen wenigen Schnipsel VBA und vielen Verweisen etc. arbeitet. 

Es gibt zwei Gruppen von Zellen über die eine Eingabe vorgenommen werden kann. Entscheidet sich der Nutzer für die erste Gruppe, sollen in der zweiten Werte angezeigt werden die sich aus diesen Informationen ergeben. 
Konkret: 
(Im Blatt "Kalkulation" die Zellen C12, C13 und C15). Wenn alle diese Felder eine Zahl enthalten, soll ein Wert (Herkunft: Blatt "Regeln und Warnungen", Zelle K39)  in einer Zelle (Kalkulation, H12) angezeigt werden.

Problem: Die Zelle H12 ist eine Alternativeingabe zu C12,C13 und C15. Heißt, der Nutzer kann entweder die C12,C13 und C15 ausfüllen oder H12. 
(Hintergrund: In den C-Zellen sollen Abmessungen eines Teils eingetragen werden, in H12 alternativ direkt das Volumen). 

Ich gehe davon aus, dass hier ein bisschen vba Magie notwendig ist. Hauptsächlich stolpere ich über den "Auslöser". Gibt es ein Ereignis, dass praktisch dauerhaft die Felder C12,C13 und C15 überwacht? Habe dazu was ergoogelt aber nicht verstanden wie das implementiert wird. 

Über ein bisschen Hilfe wäre ich daher sehr dankbar. 

Viele Grüße,
Lars
Hallo Lars,

das ist leider alles etwas verschwommen. Am besten stellst du mal deine Datei hier ein.

Zitat:Gibt es ein Ereignis, dass praktisch dauerhaft die Felder C12,C13 und C15 überwacht?

Gibt es, ist aber ein Weg über VBA, wovon du ja schreibst, dass du da nicht so dolle fit bist.
Hallo Klaus-Dieter,

erstmal danke für die schnelle Antwort. Da die Datei sensible Daten enthält würde ich die gerne für mich behalten. 
Dass die Lösung nicht ohne VBA auskommt ist mir bewusst - deshalb schreib ich hier ja auch. Ich bin mit den Grundzügen der Programmierung (allerdings auf Basis von C+) vertraut und möchte mich da gerne mehr reinarbeiten. Schwer tue ich mich bei vba vor allem mit der Adressierung von Zellen - v.a. über Tabellenblätter hinweg. 

Ich versuch mal das Problem zu konkretisieren:
C12, C13 und C15 ergeben mit einer Berechnungsformel auf einem anderen Tabellenblatt einen Wert (Ein Teilevolumen). 
Optional kann der Anwender dieses Teilevolumen auch von Hand ausrechnen und direkt in eine Zelle (H12) schreiben. 
Wählt der Nutzer nun den Weg C12, C13 und C15 zu füllen soll das Teilevolumen direkt im Feld H12 erscheinen. 
Das heißt H12 dient gleichzeitig zur Ein- und Ausgabe. 

Meine bisher zusammenrecherchierte "Lösung":
In der Tabelle, in der das Teilevolumen aus den Eingaben aus C12, C13 und C15 berechnet wird:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "[Zelle mit Berechnungsergebnis aus C12,C13 und C15]" Then
Sheets("Kalkulation").Range("H12").Value = "[Zelle mit Berechnungsergebnis aus C12,C13 und C15]"
End If
End Sub


...nur passiert dann leider nichts beim Kompilieren bzw. Ändern der Eingaben im Tool. :/. Muss alelrdings auch gestehen dass ich die Funktion des Befehls "Target.Address" nicht vollständig durchdrungen hab :). 
Hallo Lars,

ich werde da nicht versuchen, etwas nachzubauen, was nachher ohnehin nicht passen wird. Es sollte doch möglich sein, eine Beispieldatei mit wenigen anonymisierten Daten hochzuladen.
Hallo,

schaue Dir in der Überwachung mal Target.Address an. Wenn das bei Dir auf dem anderen Blatt auch H12 ist, müsstest Du "$H$12" programmieren.
Jetzt kommt aber das Problem. Eine Änderung einer Zelle per Formel löst das Änderungsereignis nicht aus. Theoretisch könntest Du das Berechnungsereignis nehmen, empfehle ich aber nicht.

Stattdessen solltest Du auf eine Änderung der Bezugszellen der Berechnung reagieren, also auf C12, C13 und C15.