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

Werte Rundenweise zwischenspeichern

Werte Rundenweise zwischenspeichern
15.04.2015 08:52:49
Friedrich
Hallo liebes Forum,
Ich beiße mir gerade die Zähne an einem Problem aus. Ich entwickle ein kleines Berechnungstool für eine Planungssimulation in der Uni. Dabei sollen mehrere Runden gespielt werden. Der Spieler soll die Möglichkeit haben, Kosten einzusparen über verschiedene Maßnahmen (welche nicht im Tool programmiert werden müssen). Ich habe ein Sheet zusammengestellt mit Bildern der Kostenträgern und kann diese dann anwählen oder abwählen (mittels Kontrollkästchen). Die entsprechenden Kostenwerte werden ausgegeben auf einem neuen Sheet und zur weiteren Berechnung bzw. Darstellung genutzt. Soweit die Ausgangslage.
Nun zu meiner eigentlichen Frage:
Ich möchte die Werte über mehrere Runden (bis zu vier Runden) einzeln Zwischenspeichern um das Ergebnis von Runde zu Runde vergleichbar zu machen. Ein konkretes Beispiel: In Runde 1 herrschen volle Kosten, also alle 19 Kostenträger sind markiert und ergeben Kosten von 1000€. In Runde 2 können schon Kosten gespart werden. Es sind nur noch 17 Kostenträger markiert, mit Gesamtkosten von 945€. So geht das Runde für Runde (Es können auch wieder Kostenträger angewählt werden, wenn man feststellt, dass die Einsparung zu Chaos führt). Wie kann ich die Werte rundenbasiert abspeichern? Ich fände es super komfortabel, wenn man z.B. mit einem Dropdown Menü RundeX auswählen kann, und dann alle Kostenträger anklickt und die entsprechenden Werte gespeichert werden. Habt Ihr eine Idee, wie man so etwas komfortabel machen kann? Ich bin leider sehr unerfahren in VBA.
Danke für Eure Hilfe:
Fred

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte Rundenweise zwischenspeichern
15.04.2015 09:33:44
fcs
Hallo Fred,
zwischenspeichern bedeutet in Excel, dass die zu speichernden Daten in separate Zellbereiche kopiert werden, wobei ggf. die Formeln durch ihre Werte ersetzt werden.
In deinem Fall bietet sich wahrscheinlich an, nach jeder Runde das komplette Berechnungsblatt zu kopieren und ggf. in dem kopierten Blatt alle Formeln durch Werte zu ersetzen, so dass die Daten im Blatt eingefroren sind.
Komfortabel machen:
Der erste Versuch wäre: Das kopieren/speichern der relevanten Daten jeder Runde per Makro-Recorder aufzuzeichnen.
Ansonsten kannst du hier den Bereich "RECHERCHE" durchsuchen. Da sollten auch Ansätze zu finden sein, wie man Daten sinnvoll von einem Tabellenblatt per Makro übertragen kann.
Gruß
Franz
P.S.:
Uni? Bedeutet das nicht auch, dass man selber lernt, sucht, findet, Wissen sammelt, sichtet, verarbeitet und anwendet? Oder zumindest herausfindet was wo steht und was man dann damit ggf. machen bzw. wie man es anwenden kann?
In soweit stellt dieses Forum dann auch eine Menge Lösungen für kleine und größere Lösungen zur Verfügung - man muss "nur" suchen..
Wer als Student oder Uni-Mitarbeiter eine VBA-Lösung in sein Projekt einbringen möchte sollte dann auch den Ergeiz haben sich soweit in die Materie einzuarbeiten, dass man selber weiss und nachvollzehen kann, was man denn da so produziert hat.

Anzeige
AW: Werte Rundenweise zwischenspeichern
15.04.2015 10:34:41
Friedrich
Hallo Franz,
du hast Recht, dass man sich in der Uni Wissen aneignen sollte. Und ich habe glaube ich auch die richtige Strategie gefunden, um mein Problem zu lösen. Ich bin allerdings Wirtschaftswissenschaftler und habe nur begrenzt mit "Informatik" zu tun. Daher habe ich mein Augenmerk nicht auf den Lernprozess bei meiner Aufgabe gelegt. Das Hauptaugenmerk liegt im Lean Gedanken der Simulation. Aber man lernt ja nie aus :)
Zu meinem Problem, bzw. meiner Lösung:
Ich habe zwei Input Sheets. Am Ende des zweiten Sheets habe ich einfach 4 Schaltflächen mit den Titeln "RundeX berechnen" hinzugefügt. Jetzt wollte ich den Makrorekorder bei den Schaltflächen nutzen und die Summe der Kosten im Berechnungs Sheet kopieren und einfach an anderer Stelle als Zahl einsetzen. Ich habe nur ein Problem. Es wird immer nur eine 0 angezeigt. Für mich gibt es daher zwei Fehlerquellen. 1. Der Rekorder funktioniert nicht richtig (mir werden bei ALT + F11 keine Makros angezeigt) oder 2. Die Summe kann nicht übernommen werden. Ich muss dem Makro klar machen, dass es den aktuellen Zahlenwert der Zelle kopieren soll und an anderer Stelle einfügen soll. Wenn ich 1. durch Tüfteln ausschließen kann, bleibt mir aber wahrscheinlich Problem 2. Excel wird ja wahrscheinlich nach jeder Runde den aktuellen Summenwert auch in die neuen Berechnungen übernehmen. Wie könnte ich das verhindern?
Merci für die Hilfe
Fred

Anzeige
AW: Werte Rundenweise zwischenspeichern
15.04.2015 11:12:38
fcs
Hallo Fred,
es ist mir schon klar, das der Schwerpunkt auf der Simulation liegt. Es schadet aber nichts, wenn man sich dann mit den benutzten Hilfswerkzeugen auch ein wenig auskennt - macht ja manchmal etwas her.
Fehlerquellen:
1. Der Rekorder funktioniert nicht richtig (mir werden bei ALT + F11 keine Makros angezeigt)
Beim Straten des Recorders kann man auswählen, wo das aufzuzeichnende Makro gespeichert werden soll.
- persönliche Makro-Arbeitsmappe
- Diese Arbeitsmappe - aktive Arbeitsmappe
- Neue Arbeitsmappe
In deinem Fall muss du "Diese Arbeitsmappe" wählen.
Wenn du mit der Tastenkombination den VBA-Editor startest, dann wird links normalerweise der VBA-Projekt-Explorer für die geöfneten Dateien angezeigt. Falls nicht, dann über Menü--Ansicht den Projektexplorer einblenden.
Aufgezeichnete Makros befinden sich dann in einem der Module. Wenn du Axtive-X-Schaltflächen benutzt, dann werden deren Codes ggf. unter dem jeweiligen Tabellenblatt abgelegt.
Beim Speichern einer Datei dann darauf achten, dass du sie beim Dateiformat ab Excel 2007 dann auch mit Makros speichern muss (xlsm-Datei).
2. Die Summe kann nicht übernommen werden. Ich muss dem Makro klar machen, dass es den aktuellen Zahlenwert der Zelle kopieren soll und an anderer Stelle einfügen soll.
Du selektierst die zu kopierende(n) Zelle(n) und kopierst, beim Einfügen in die Zielzelle(n) musst du dann mit der Option "Nur Werte" oder "Werte und Zahlenformate" einfügen.
Dann werden in den Zielzellen keine Formeln eingefügt, sondern das aktuelle Ergebnis der Formel(n).
Gruß
Franz

Anzeige
AW: Werte Rundenweise zwischenspeichern
15.04.2015 12:27:42
Friedrich
Hi Franz,
Habe es fast genau so wie du beschrieben hast hin bekommen. Danke. Und der Lernerfolg war auch da^^
Jetzt stehe ich allerdings vor einem neuen Problem...
Ich möchte das Tool möglichst komfortabel für oftmaliges nutzen auslegen. Dazu wollte ich ein Makro programmieren, das den Startzustand des Spiels darstellt. Ich konnte alle Eingabefester ohne Probleme leeren bzw. mit Startwerten versehen. Nun wollte ich noch alle CheckBoxen aktivieren, um alle Kosten zu aktivieren. Hierbei habe ich aber Probleme. Ich habe ähnliche Probleme hier im Forum schon gesehen und es gab eine elegante schnelle Lösung.
Sub CheckAll()
Dim oChk As OLEObject
For Each oChk In OLEObjects
If TypeName(oChk.Object) = "CheckBox" Then
oChk.Object.Value = True
End If
Next
End Sub
Aber bei mir klappt das nicht. Ich bekomme einen Fehler in Zeile 3 "Objekt erforderlich". Also habe ich mich aufgemacht, das ganze (sind nur 39 Kästchen) manuell in VBA einzugeben:
Sub AlleMarkieren()
CheckBox21.Value = True
CheckBox22.Value = True
'und immer so weiter
End Sub
gab leider auch den Fehler, dass kein Objekt gefunden wurde. Dachte vielleicht versteht Excel kein Englisch (warum auch immer), also mit deutscher Bezeichnung probiert:
Sub AlleMarkieren()
Kontrollkästchen21.Value = True
Kontrollkästchen22.Value = True
'und immer so weiter
End Sub
natürlich mit gleichem Fehler. Was mache ich falsch? Wo finde ich die richtige Bezeichnung der Kästchen, um sie anzusprechen?
Vielen Dank
Fred

Anzeige
AW: Für alle Checkboxen den Wert setzen
16.04.2015 07:45:24
fcs
Hallo Fred,
du hast die Referenz auf die OLE-Objekte nicht gesetzt. Du musst auch das Tabellenblatt angeben, auf dem sich die Objekte befinden. Falls du Checkboxen aus den Formular-Steuerelementen verwendest, dann sieht es anders aus.
Sub CheckAll_Active_X_Checkboxen()
'Active-X-Checkboxen auf True setzen
Dim oChk As OLEObject
For Each oChk In Worksheets("Tabelle1").OLEObjects
If TypeName(oChk.Object) = "CheckBox" Then
oChk.Object.Value = True
End If
Next
End Sub
Sub CheckAll_FormularCheckboxen()
'Formular-Checkboxen auf True setzen
Dim oChk As Shape
For Each oChk In Worksheets("Tabelle1").Shapes
If oChk.Type = msoFormControl Then
If oChk.FormControlType = xlCheckBox Then
oChk.ControlFormat.Value = 1 '1 = gesetzt, -4146 = nicht gesetzt
End If
End If
Next
End Sub
Sub Alle_Checkboxen_True()
'Alle Checkboxen auf True setzen
Dim oChk As Shape
For Each oChk In Worksheets("Tabelle1").Shapes
Select Case oChk.Type
Case msoOLEControlObject
'Active-X-Checkboxen auf True setzen
If TypeName(oChk.OLEFormat.Object.Object) = "CheckBox" Then
oChk.OLEFormat.Object.Object.Value = True
End If
Case msoFormControl
' Formular-Checkboxen auf True setzen
If oChk.FormControlType = xlCheckBox Then
oChk.ControlFormat.Value = 1 '1 = gesetzt, -4146 = nicht gesetzt
End If
End Select
Next
End Sub

Wenn die Checkboxen mit Zellen verknüpft sind, dann kannst du auch den Wert der Zellen entsprechend ändern.
Gruß
Franz
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige