Hallo „wer-weiss-was“-Gemeinde, ich habe folgendes Problem:
Es fallen täglich unterschiedliche Mengen eines bestimmten Produktes (z.B. A, B, C) an, welche kumulativ erfasst werden müssen und die Grundlage für weitere Berechnungen bilden. Eine Einzelerfassung dieser Werte erfolgt nicht.
Ich möchte nun über eine Dropdownliste das Produkt auswählen (z.B. A), dafür den zu addierenden Wert eintragen, so dass er zu der vorhandenen Menge addiert wird und so die neue kumulative Summe ergibt.
Lässt sich das mit Excel 2000 bzw. 2003 realisieren und wenn ja, wie?
Das ließe sich durchaus machen. Es wäre allerdings recht hilfreich, wenn Du den Ablauf, wie Du ihn Dir vorstellst, einmal beschreibst. Möchtest Du die Dropdownliste auf dem Tabellenblatt haben und dazu ein Textfeld, in das Du den zu kumulierenden Wert eingibst; oder möchtest Du einen Wert in eine Zelle eingeben und diesen dann automatisch nach Auswahl des Artikels kumulieren, oder möchtest Du einen Dialog angezeigt bekommen, nachdem Du einen Artikel ausgewählt hast? Theoretisch wäre das Ganze sogar ohne Dropdown zu realisieren, indem Du durch Dein Tabellenblatt scrollst, in dem die Artikel aufgeführt sind und dann per Doppelklick auf den Artikel einen Eingabe-Dialog anzeigen läßt.
Die Möglichkeiten sind vielfältig.
Und wie ist Deine Tabelle strukturiert?
Das ließe sich durchaus machen. Es wäre allerdings recht
hilfreich, wenn Du den Ablauf, wie Du ihn Dir vorstellst,
einmal beschreibst. Möchtest Du die Dropdownliste auf dem
Tabellenblatt haben und dazu ein Textfeld, in das Du den zu
Hallo Carsten,
danke dass Du Dich meines Problems annimmst!
Die Variante mit dem Doppelklick auf den Artikel und dem Eingabedialog erscheint mir am besten geeignet.
Zu Deiner Frage Tabellenstruktur:
Spalte A kurze Artikelbeschreibung, B Artikelnummer, C Produktionsstand (eigentlich überflüssig), D Tagesproduktion, E kumulative Summe der Produktion (jahresübergreifend), F Formel für Prüfdicht, G Anzahl der erforderlichen Prüfungen (ergibt sich aus kumulativer Summe und Formel für Prüfdichte), H kumulativ aufgerechnete durchgeführte Anzahl von Prüfungen zum Vergleich mit den Sollwerten aus Spalte G.
Sinnvoll wäre es für mich, wenn ich über den Eingabedialog für den entsprechenden Artikel die Werte für die Tagesproduktion und die Anzahl der Prüfungen an diesem Tag zu den Werten der Spalte E und H addieren könnte.
Ich hoffe Du kannst Dir daraus ein brauchbares Bild machen!
Die Variante mit dem Doppelklick auf den Artikel und dem
Eingabedialog erscheint mir am besten geeignet.
Ok.
den entsprechenden Artikel die Werte für die Tagesproduktion
und die Anzahl der Prüfungen an diesem Tag zu den Werten der
Spalte E und H addieren könnte.
Da muß ich mehr Details wissen:
Handelt es sich bei dem zu kumulierenden Wert um einen einzelnen Wert, der sowohl in Spalte E, als auch in Spalte H aufaddiert werden soll?
Oder:
Sind hier zwei Werte vorhanden, von denen der eine in Spalte E und der andere in Spalte H aufaddiert wird?
Soll der Eingabedialog angezeigt werden, wenn Du auf die Artikelbeschreibung doppelklickst, oder wenn Du auf die Artikelnummer doppelklickst?
Der folgenden Code kann in das Codefenster der Tabelle mit den Artikeln kopiert werden. Dazu bitte über die Menüs ‚Extras‘ > ‚Makros‘ > ‚Visual Basic-Editor‘ in den Editor gehen und dort im Projekt-Explorer (Baumstruktur meist links oben) auf den Tabellennamen doppelklicken, in dem Deine Artikel stehen.
Der Code muß bestimmt noch angepaßt werden:
Public NeuerWert
Private Sub Worksheet\_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Select Case Target.Column 'Erfassen der doppelgeklickten Spalte
Case 1 'Artikelbeschreibung
If IsEmpty(Target) = True Then Exit Sub ' Wenn in der Zelle nichts eingetragen ist, dann verlasse die Prozedur
Cancel = True ' Doppelklick abbrechen
On Error GoTo Fehler 'Wenn ein Fehler auftritt, dann verzweige zur Sprungmarke "Fehler"
NeuerWert = InputBox("Bitte geben Sie einen Wert ein", Cells(Target.Row, 1)) ' Anzeigen des Eingabedialoges
If NeuerWert = "" Then Exit Sub ' Wenn auf Abbrechen geklickt wurde, dann verlasse die Prozedur
NeuerWert = Trim(NeuerWert) \* 1 'Löschen versehentlich eingetippter Leerzeichen und überprüfen, ob eine Zahl eingegeben wurde
Cells(Target.Row, 5) = Cells(Target.Row, 5) \* 1 + NeuerWert 'Aufaddieren des Wertes in Spalte E
End Select
Ende:
Exit Sub 'Verlasse die Prozedur
Fehler:
MsgBox "Geben Sie's zu. Sie haben keine Zahl eingegeben." 'Eine Meldung anzeigen
Resume Ende 'Fehlerbehandlung beenden und zur Sprungmarke "Ende" verzweigen
End Sub
es sind zwei separate Werte. Einer für Spalte E und einer für Spalte H.
Der Eingabedialog soll angezeigt werden, wenn ich auf die Artikelnummer doppelklicke.
Möglich dass sich das im Laufe der Zeit und verschiedenen Anpassungen, welche es unvermeidbar immer wieder geben wird, ändert. Aber ich denke wenn ich Deinen grundsätzlichen Lösungsansatz kenne, werde ich solche Änderungen selbst vornehmen können.
Private Sub Worksheet\_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Lokale Variablen
Dim NeuerWertE
Dim NeuerWertH
'\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
Select Case Target.Column 'Erfassen der doppelgeklickten Spalte
Case 2 'Artikelnummer
If IsEmpty(Target) = True Then Exit Sub ' Wenn in der Zelle nichts eingetragen ist, dann verlasse die Prozedur
Cancel = True ' Doppelklick abbrechen
On Error GoTo Fehler 'Wenn ein Fehler auftritt, dann verzweige zur Sprungmarke "Fehler"
NeuerWertE = InputBox("Bitte geben Sie einen Wert für Spalte E ein", Cells(Target.Row, 2)) ' Anzeigen des Eingabedialoges
If NeuerWertE = "" Then Exit Sub ' Wenn auf Abbrechen geklickt wurde, dann verlasse die Prozedur
NeuerWertE = Trim(NeuerWertE) \* 1 'Löschen versehentlich eingetippter Leerzeichen und überprüfen, ob eine Zahl eingegeben wurde
NeuerWertH = InputBox("Bitte geben Sie einen Wert für Spalte H ein", Cells(Target.Row, 2)) ' Anzeigen des Eingabedialoges
If NeuerWertH = "" Then Exit Sub ' Wenn auf Abbrechen geklickt wurde, dann verlasse die Prozedur
NeuerWertH = Trim(NeuerWertH) \* 1 'Löschen versehentlich eingetippter Leerzeichen und überprüfen, ob eine Zahl eingegeben wurde
Cells(Target.Row, 5) = Cells(Target.Row, 5) \* 1 + NeuerWertE 'Aufaddieren des Wertes in Spalte E
Cells(Target.Row, 8) = Cells(Target.Row, 8) \* 1 + NeuerWertH 'Aufaddieren des Wertes in Spalte H
End Select
Ende:
Exit Sub 'Verlasse die Prozedur
Fehler:
MsgBox "Geben Sie's zu. Sie haben keine Zahl eingegeben." 'Eine Meldung anzeigen
Resume Ende 'Fehlerbehandlung beenden und zur Sprungmarke "Ende" verzweigen
End Sub