Clever-Excel-Forum

Normale Version: Button einfügen, Werte in anderer Mappe aufadieren,...
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo liebe Gemeinde  


Ich habe schon immer gerne "einfache" Tabellen mit Formeln erstellt, stehe derzeit aber vor Neuland und einem kleinen Problem. Vielleicht kann euer gesammeltes Wissen mich etwas voran treiben. 

Zur Erklärung:
In einer "Eingabemaske" sollen in zwei Zeilen Werte eingegeben werden. (Bsp A1 = 90min, A2 = 5 Stck) 
Zwei weiter Zeilen sind Auswahllisten (Bsp C1 = Maschine A-F, C2 = Material A-F). Die Auswahlliste befindet sich in Mappe2. 

Soweit bin ich gekommen. ?

Nun wäre es schön, wenn es einen Button gäbe, mit welchem... 

a) die eingegebene Zeit hinter der jeweiligen Maschine in Mappe 2 aufadiert wird 
b) die eingegebene Stückzahl hinter dem jeweiligen Material in Mappe 2 abgezogen wird 
c) Bonus..... Alle gemachten Eingaben in Mappe 3 in Reihe zur Übersicht aufgelistet werden. 
d) alle gemachten Eingaben werden "gelöscht" 

Ich hoffe ich konnte das einigermaßen verständlich erklären. Falls eine testdatei benötigt wird, kann ich diese später gerne nachreichen. 

Lg
ja bitte eine Beispiel Datei
Hallo,

zuerst mal musst du dir die korrekte Nomenklatur in Excel bewusst machen, sonst wird das nix.
1. Es gibt keine "Zeile A1", sondern eine Zelle A1 und eine Zeile 1
2. Du schreibst von "Mappe2". Eine Mappe ist eine komplette Exceldatei, bestehend aus einem oder mehreren Tabellenblättern. Ich vermute, dass hier Tabellenblätter gemeint sind.

Und ja, Beispielmappe (keine Bilder!) sind notwendig dafür. Falls tatsächlich mehrere Mappen (=Dateien) gemeint sein sollten, dann natürlich entsprechend viele Beispielmappen.
Anbei die Testdatei.
Rot unterlegte Zellen in Mappe "Maske" sind Eingabefelder.
Grün unterlegte Zellen in Mappe "Material-Maschinen" sollen durch Button "beeinflusst werden".
[attachment=21029]
(27.11.2018, 13:16)MisterBurns schrieb: [ -> ]Hallo,

zuerst mal musst du dir die korrekte Nomenklatur in Excel bewusst machen, sonst wird das nix.
1. Es gibt keine "Zeile A1", sondern eine Zelle A1 und eine Zeile 1
2. Du schreibst von "Mappe2". Eine Mappe ist eine komplette Exceldatei, bestehend aus einem oder mehreren Tabellenblättern. Ich vermute, dass hier Tabellenblätter gemeint sind.

Und ja, Beispielmappe (keine Bilder!) sind notwendig dafür. Falls tatsächlich mehrere Mappen (=Dateien) gemeint sein sollten, dann natürlich entsprechend viele Beispielmappen.

Hallo.

Tatsächlich ist mir bewusst, dass es sich um Zellen handelt. Da wird wohl die Autokorrektur am Handy zugeschlagen haben.
Mit Mappen meinte ich in der Tat die Tabellenblätter. Hatte beim schreiben am Handy kein Excel vor mir und ich hätte schwören können, die heißen "Mappen".
Aber tatsächlich heißen diese Tabellen.

Ich hoffe ich konnte die Ungereimtheiten etwas aufklären.

LG
Alles klar, dieser Code sollte dein Problem lösen.

Code:
Sub Uebertragen()
Dim Material As Range, Maschine As Range
Dim Quelle As Worksheet, Ziel As Worksheet
Dim freieZeile As Long

Set Quelle = Sheets("Maske")
Set Ziel = Sheets("Maschinen-Material")
Set Maschine = Ziel.Range("B4:B7").Find(what:=Quelle.Range("I4"))
Set Material = Ziel.Range("B11:B14").Find(what:=Quelle.Range("I3"))

'Überträgt die Werte in Tabellenblatt "Maschinen-Material"
With Ziel
   .Cells(Maschine.Row, "C") = .Cells(Maschine.Row, "C") + Quelle.Range("C4")
   If .Cells(Material.Row, "D") = "" Then
       .Cells(Material.Row, "D") = .Cells(Material.Row, "C") - Quelle.Range("C3")
   Else
       .Cells(Material.Row, "D") = .Cells(Material.Row, "D") - Quelle.Range("C3")
   End If
End With


'Überträgt die Werte in Tabellenblatt "Übersicht"
With Sheets("Übersicht")
   freieZeile = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
   .Range("A" & freieZeile) = Quelle.Range("I3")
   .Range("B" & freieZeile) = Quelle.Range("I4")
   .Range("C" & freieZeile) = Quelle.Range("C3")
   .Range("D" & freieZeile) = Quelle.Range("C4")
End With


'Löscht die Eingaben auf Tabellenblatt "Maske"
Quelle.Range("C3:C4, I3:I4").ClearContents

End Sub

Die Frage ist nur, was soll passieren wenn die Menge 0 erreicht ist?
Zitat:Alles klar, dieser Code sollte dein Problem lösen.

Vielen vielen lieben Dank für deine Hilfestellung.

Hab den Code mal getestet.

Zeit und Menge werden soweit übertragen.
Bei Materialmenge wird auch super subtrahiert.
Bei der Maschienenzeit kann allerdings nur jede Maschine einmal übertragen werden.
Wird eine Maschine ein zweites mal benutzt kommt eine Fehlermeldung:

Laufzeitfehler `13:
Typen unverträglich

Auflistung in der Übersicht klappt perfekt

Löschen aller Eingaben ebenfalls.


Zitat:Die Frage ist nur, was soll passieren wenn die Menge 0 erreicht ist?
Im Grunde soll mir das nur als Übersicht dienen....Welches Material geht zu neige.
Bei Neubeschaffung von Material wäre für mich ein händisches "nullen" kein Problem.
Der Fehler kommt deshalb, weil (zumindest in deiner Beispieldatei) die Zeit in Wahrheit Text ist. Formatiere die Zelle als Zeit im Format hh:mm und (ganz wichtig) doppelklicke in die Zelle und drücke dann Enter. Nun sollte es tatsächlich ein Zahlenwert sein (ja, auch eine Zeitangabe in Excel ist letztlich nur eine Zahl).

Da ich davon ausgehe, dass die Stunden über 24 hinaus addiert werden sollen, formatiere die Zeit-Zellen im Zielblatt im Format [hh]:mm
Top....das war es.

Konnte es sogar schon in die eigentliche Tabelle einarbeiten.
Super.

Das einzige das nicht funktionierte:
Meine dropdownzellen waren zwei verbundene Zellen.
Diese konnten nicht "ge-cleart" werden.

Wenn ich die Verbindung der Zellen nun aufhebe, funktioniert es.....allerdings ist mir das Dropdownfeld nun zu klein.
Verbreitern kann ich es nicht, da die Zellen darunter sonst zu groß wären.


Ist es möglich, ein Dropdownfeld und dessen Liste durch klick direkt zu öffnen, ohne vorher auf den Pfeil zu klicken und die Liste direkt größer anzeigen zu lassen?


LG


Edit: Inwiefern müsste der code abgeändert werden, wenn Material und Maschinen auf zwei Unterschiedlichen Tabellenblättern wären?
Hab nun versucht laienhaft den obigen Code selbst zu splitten um maschinen und Material in zwei unterschiedliche Tabellen zu übertragen.

Dazu einfach zwei mal "with Ziel" erstellt. 

Allerdings klappt das so einfach wohl nicht. 
Könnte mir jemand dazu noch mal auf die Sprünge helfen?
Lg
Seiten: 1 2