Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
552to556
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
552to556
552to556
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zellenwerte erhalten und Aktualisierungschleife

Zellenwerte erhalten und Aktualisierungschleife
24.01.2005 10:17:27
RüdigerK.
Hallo Thinktanks!
Ich möchte jetzt einmal von Eurem geballten Excelwissen profitieren, weil ich hier nicht weiterkomme.Es stellt sich folgendes Problem:
In Arbeitsblatt A habe ich in Zelle D1 eine Summe.Diese Summe wird in Arbeitsblatt B in Zelle B3 übernommen (=B!$D$1).
Bei Änderung des Wertes in A!D1 soll der geänderte Wert automatisch an B!B4 übergeben werden. B!B3 soll als Zahlenwert aber erhalten bleiben.
Dieses Spielchen soll sukzessive bis Zelle B!B10 weitergeführt werden, wobei der jeweils letzte Wert immer erhalten bleiben soll.
Wenn B!B10 der aktuelle Wert aus A!D1 uebergeben wurde, soll allerdings wieder auf Zelle B!B3 zurückgesprungen werden,und das ganze Spielchen soll sich wiederholen.
Habe schon diverse Wenn-Formeln versucht, kann aber die Werte in den Formelzellen nicht erhalten, da sie natürlich immer wieder neu berechnet werden.
Hat da von Euch jemand eine Lösung für mich? Bzw. Geht das überhaupt?
Mfg
Ruediger

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellenwerte erhalten und Aktualisierungschleife
Roland
Hallo Ruediger,
lösche in Tabelle B in B3 die Formel und pack danach folgenden Code in Tabelle A:

Private Sub Worksheet_Calculate()
Dim dblWert As Double, i As Byte
i = Sheets("B").Range("B11").End(xlUp).Row + 1
If i < 3 Then i = 3
dblWert = Sheets("A").Range("D1").Value
If i <= 10 Then
Sheets("B").Range("B" & i).Value = dblWert
Else
Sheets("B").Range("B3:B10").Clear
i = 3
Sheets("B").Range("B" & i).Value = dblWert
End If
End Sub

Feedback wäre nett :-)
Gruß
Roland
AW: Zellenwerte erhalten und Aktualisierungschleife
Roland
Sorry, natürlich so:

Private Sub Worksheet_Calculate()
Dim dblWert As Double, i As Byte
i = Sheets("B").Range("B11").End(xlUp).Row + 1
If i < 3 Then i = 3
dblWert = Sheets("A").Range("D1").Value
If dblWert <> Sheets("B").Range("B" & i - 1).Value Then
If i <= 10 Then
Sheets("B").Range("B" & i).Value = dblWert
Else
Sheets("B").Range("B3:B10").Clear
i = 3
Sheets("B").Range("B" & i).Value = dblWert
End If
End If
End Sub

Roland
Anzeige
AW: Zellenwerte erhalten und Aktualisierungschleife
24.01.2005 19:16:42
RüdigerK
Hallo Roland, G E N I A L :-)
Damit hast Du mir genau die Lösung - zumindest den ersten Teil - gegeben, die ich brauchte.
Hab ich mit meinen geringen VBA Kenntnissen angepasst ... und es läuft!!!
Doch so weit reichen die Kenntnisse dann doch nicht .-(
Ich möchte das gleiche mit anderen Zellen in der gleichen Tabelle(z.B. A!D18)
wiederholen (A!D1 nach B!B3:B10 und z.B. A!D4 nach B!C3:C10)
Die Funktion bleibt die gleiche (und macht mich immer noch richtig glücklich), nur wird sie durch weitere Berechnungen ergänzt. (Case? Vielleicht)
Do it only one more time, please!
Vielen Dank auf jeden Fall schon mal für die bisherige Lösung! Echt S U P E R!
Mfg
Rüdiger
Anzeige
AW: Zellenwerte erhalten und Aktualisierungschleife
24.01.2005 22:36:26
RüdigerK
Hi Roland,
nu hab ich mit Deiner Formel noch ein wenig herumgespielt, sie (einfach wie ich bin) kopiert und die Werte für ander Felder angepasst.
Auch das klappte - wenn auch nicht elegant! Ich kann jetzt die gleiche Prozedur
auch auf andere Zellen und Werte bezogen ausführen.(Sowohl im "Ursprungsblatt" als auch im "Zielblatt")
Doch nun ...
Der Wert ist immer "geändert", wenn er im Zielblatt geschrieben wird. Das klappt für eine Spalte und für alle weiteren Spalten,sofern sich deren Werte gleichzeitig geändert haben.
Ändert sich aber ein individueller Wert im Ursprungsblatt, ohne daß die anderen Werte dort davon betroffen sind,bleiben die Zeilen leer und nur der geänderte Wert wird im Zielblatt eingetragen. Kann man es schaffen,die Werte der "Vorfeldes" im Zielblatt zu übernehmen, wenn keine Änderung stattgefunden hat?
So in etwa wie "wenn B2 in Blatt2 geändert, dann A2 wie A1 in Blatt2"?
Und noch was! Ich habe versucht, die Prozedur in ein anderes Blatt zu kopieren und dort auszuführen Das klappt nicht!
Es wäre ziemlich wichtig,daß das ginge. Was müsste ich da ändern?
Mfg
Rüdiger
Anzeige
AW: Zellenwerte erhalten und Aktualisierungschleif
24.01.2005 23:56:45
Roland
Hallo Rüdiger,
. . . .So in etwa wie "wenn B2 in Blatt2 geändert, dann A2 wie A1 in Blatt2"?
Klar geht das, und wenn es für deine Zwecke sinnvoll ist, JEGLICHE Änderung im Blatt A mit einer Änderung in Blatt B (unabhängig davon, ob sich die Summe geändert hat) zu begleiten, dann streiche die Zeilen
If dblWert Sheets("B").Range("B" & i - 1).Value Then
sowie
End If
einfach heraus. Ab dann wird nicht mehr geprüft, ob es zu einer Veränderung gekommen ist.
Und noch was! Ich habe versucht, die Prozedur in ein anderes Blatt zu kopieren und dort auszuführen Das klappt nicht!
Das MUSS klappen. Hast du vieleicht die Blattnamen nicht angepasst?
Gute Nacht
Roland
Anzeige
AW: Zellenwerte erhalten und Aktualisierungschleif
RüdigerK
Hallo Roland,
Hat auch super geklappt. Hab eine Variable "übersehen".Jetzt läufts auch da. Auch den Rest macht es gut(ist fast wie zaubern).
ABER! Wenn ich die Berechnung in dem anderen Blatt mache, dann werden die Daten des ersten Blattes nicht mit aktualisiert (vice versa geht es)erstaunlicherweise. (Ob Du weißt,warum das so ist, kann ich mir als Frage wohl sparen)
Meinen Respekt! Für meine erste "Forumserfahrung" bin ich postiv überrascht über die kompetente und konstruktive Zusammenarbeit der Mitglieder (sehr erfreulich heutzutage).
Um das jedoch nochmal zu "testen", möchte ich die Anfrage noch erweitern:
Wenn ich nun in dem "Ursprungsblatt" zwei Zellen habe, deren Wert übergeben werden soll (allerdings nicht gleichzeitig), möchte ich eine Zelle haben deren Wert "Monat" oder "Jahr" ausgelesen wird (ein Button wäre das Größte), was zur Folge hätte, dass, wenn "Monat" drinstehen würde, die Zellen BlattA!D3 ausgelesen würde, und bei "Jahr" eben
BlattA!D18 oder so.
Ist das ein zu großer Aufwand oder überstrapaziere ich Deine Nerven schon?
Auf jeden Fall schon mal vielen Dank bis hierher!!
mfg
Rüdiger
Anzeige
AW: Zellenwerte erhalten und Aktualisierungschleif
25.01.2005 21:42:01
RüdigerK
Hallo Roland,(hab den Beitrag von eben noch nicht gesehen, daher hier nochmal)
Hat auch super geklappt. Hab eine Variable "übersehen".Jetzt läufts auch da. Auch den Rest macht es gut (ist fast wie zaubern).
ABER! Wenn ich die Berechnung in dem anderen Blatt mache, dann werden die Daten des ersten Blattes nicht mit aktualisiert (vice versa geht es)erstaunlicherweise. (Ob Du weißt,warum das so ist, kann ich mir als Frage wohl sparen)
Meinen Respekt! Für meine erste "Forumserfahrung" bin ich postiv überrascht über die kompetente und konstruktive Zusammenarbeit der Mitglieder.
Um das jedoch nochmal zu "testen", möchte ich die Anfrage noch erweitern:
Wenn ich nun in dem "Ursprungsblatt" zwei Zellen habe, deren Wert übergeben werden soll (allerdings nicht gleichzeitig), möchte ich eine Zelle haben deren Wert "Monat" oder "Jahr" ausgelesen wird (ein Button wäre das Größte),was zur Folge hätte, dass, wenn "Monat" drinstehen würde, die Zellen BlattA!D3 ausgelesen würde, und bei "Jahr" eben
BlattA!D18 oder so.
Ist das ein zu großer Aufwand?
Auf jeden Fall schon mal vielen Dank bis hierher!!
mfg
Rüdiger
Anzeige
AW: Zellenwerte erhalten und Aktualisierungschleif
26.01.2005 09:45:21
Roland
Hallo Rüdiger,
. . .ABER! Wenn ich die Berechnung in dem anderen Blatt mache, dann werden die Daten des ersten Blattes nicht mit aktualisiert (vice versa geht es)erstaunlicherweise
Das liegt daran, dass das Makro eine blattgebundene Ereignisprozedur ist. Du kannst dir durchaus auch in das andere Blatt eine Prozedur reinschreiben, die arbeitet dann eben auch "nur" im anderen Blatt.
Zu deiner Zusatzfrage: Schreibe in Blatt"A" in A6 den Monat, in A7 das Jahr. Wechsle nun auf Blatt"B". Klicke mit der rechten Maustaste auf einen freien Platz der Menüzeile (z.B. rechts neben dem ?). Es müsste ein Kontextmenü aufgehen, in dem du u.a. "Steuerelement-Toolbox" anwählst. Fahr da mal vorsichtig mit der Maus drüber, bis du "Umschaltfläche" gefunden und aktiviert hast. Nun ziehe deinen Button an die von dir gewünschte Stelle in das Blatt"B".
Jetzt bitte doppelt auf auf "ToggleButton1" klicken; du landest in der Entrwicklungsumgebung und müsstest bereits das Gerippe des folgenden Makros sehen:

Private Sub ToggleButton1_Click()
With ToggleButton1
If ToggleButton1 Then
.BackColor = vbGreen
.Caption = "Monat"
Range("G3") = Sheets("A").Range("A6")
Else
.BackColor = vbRed
.Caption = "Jahr"
Range("G3") = Sheets("A").Range("A7")
End If
End With
End Sub

Wenn die Ausgabe nicht in G3 erfolgen soll oder dir die Farben nicht zusagen, dann je nach Gusto anpassen.
Viel Erfolg
Roland
Anzeige
AW: Zellenwerte erhalten und Aktualisierungschleif
26.01.2005 16:14:57
RüdigerK
Hallo Roland,
tja, je komplexer die Fragestellungen, umso schwieriger die Beschreibungen. Erst einmal vielen Dank für Deine Geduld.
Selbst auf die Gefahr hin, Dich mit meinen Anfragen tendenziell "überzustrapazieren" -was ich nicht hoffe - versuch ich das Ganze noch etwas zu konkretisieren.
A) Ist es (ohne allzu großen Aufwand) möglich, die Prozedur auf die gesamte Arbeitsmappe zu "portieren"? Ich kann ja theoretisch den Code auch in die Arbeitsmappe einfügen.
Hab ich auch versucht, geht aber nicht (zu blöd?)
B) Dieser Button soll eine Auswahl der "zur Berechnung herangeszogenen Formel" ermöglichen. Will sagen, bei "if" soll er die "Jahr Prozedur" (der Originalcode), und bei "else" die "Monatsprozedur" - also die "gleiche Prozedur, nur eben mit anderen
"Ranges" des Ursprungsblattes ausführen. Die restlichen "Aktionen" der
Ursprungsscripts sollen ein und dieselben bleiben.
Ich denke, der Buttoncode von Dir bezieht sich nur auf bestimmte Zellen, nicht aber
auf die Prozedur. Sorry, wenn ich mich da unklar ausgedrückt habe.

Na? Tut es Dir schon leid, überhaupt auf meinen Beitrag geantwortet zu haben? Ich
hoffe nicht, daß das alles schon zu viel ist ;-(

mfg
Rüdiger
Anzeige
AW: Zellenwerte erhalten und Aktualisierungschleif
26.01.2005 16:49:02
Roland
Hallo Rüdiger,
- Ereigniscode muss in jedes Blatt geschrieben werden, für das er gelten soll. Einfach in "Diese Arbeitsmappe" funktioniert nicht.
- Prozeduren aufrufen ist ganz simpel:

Private Sub ToggleButton1_Click()
With ToggleButton1
If ToggleButton1 Then
Prozedur1
Else
Prozedur2
End If
End With
End Sub

wobei Prozedur1 und Prozedur2 in einem allgemeinen Modul stehen. Pass nur auf, dass du in den Prozeduren nicht versehentlich das gleiche Ereignis aufrufst, von dem wiederum die Prozedur aufgerufen wurde, sonst droht die Endlosschleife :-)
Viel Erfolg Roland
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige