18.01.2019, 23:23
Nächster Versuch.
Formel ignorieren
|
20.01.2019, 07:20
Hallöchen,
erstes Ergebnis - ich zitiere mich mal: Zitat:Das Makro kommt in das Codemodul der Tabelle mit den Daten. Du hast es in ein Modul geschrieben und zudem noch eine zusätzliche Sub-Zeile darüber. Ich schaue dann mal noch nach der "Logik". Jetzt ist erst mal der Bäcker dran
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
20.01.2019, 08:23
Hallöchen,
im Makro hast Du auch nicht alles übernommen. Hier nochmal der angepasste Code, der reagiert jetzt auf eine Änderung des Datums und nicht auf Änderung von A3. A3 ermittelst Du ja per Formel und wenn Du dort auf eine Änderung reagieren willst, müsste man einen anderen Ansatz und ein anderes Ereignis verwenden - z.B. Worksheet_Calculate. Das könnte sich bei größeren Datenmengen aber auf die Performance auswirken ... Bei der Zufallszahl kannst Du nicht so einfach kontrollieren, was übernommen wird. Ablauf: Bei Änderung des Datums in A1 wird zuerst die Zufallszahl neu berechnet. Dann wird die neu berechnete Zufallszahl nach A2 übernommen, wenn die Bedingung erfüllt ist. Anschließend wird nochmal eine Zufallszahl berechnet. In A2 steht also eine Zufallszahl, die Du nicht zu sehen bekommen hast. Private Sub Worksheet_Change(ByVal Target As Range) 'Events deaktivieren Application.EnableEvents = False 'Wenn die Adresse $A$3 ist, dann If Target.Address = "$A$1" Then 'Gehe bei Fehler zur Sprungmarke On Error GoTo errorhandler 'Wenn das Heute >= Datum von A1 dann uebernehme Wert aus A3 If Date >= Range("A1") Then Range("A2").Value = Range("A3").Value 'Target.Value 'Wenn die Adresse $A$3 ist, dann End If errorhandler: 'Events aktivieren Application.EnableEvents = True End Sub
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
20.01.2019, 12:27
Sorry, aber ich verstehe rein gar nichts.
Welches Datum auch immer, es wird immer die Zufallszahl übernommen. Und nein, ich übernehme in A2 die Daten aus einer externen Quelle, die hier durch A3 dargestellt ist. Und dem Makro muss ich ja mit SUB einen Namen geben, sonst kann ich es gar nicht abspeichern, jedenfalls wüsste ich nicht, wie. Vielleicht geht es einfacher so: Lassen wir das Datum beiseite. Ich übernehme wie bisher in A2 die Daten aus einer externen Quelle, die hier durch A3 als Zufallszahl dargestellt ist. Sie sollen aber nur übernommen werden, wenn A2 noch leer ist, sonst den Inhalt belassen. Vielen Dank und Gruss Peter Pan
Hallöchen,
da steht doch eindeutig Sub dabei: Private Sub Worksheet_Change(ByVal Target As Range) und wo soll denn das Makro nun was eintragen oder auch nicht? In A1 steht das Datum, in A2 die Daten aus der externen Quelle, in A3 die Zufallszahl ??? In Deiner Datei war A3 die Quelle und ich verhindere mit meinem Makro unter einer Bedingung, dass der Inhalt von A3 in A2 übernommen wird. Wenn Deine externen Daten nach A2 kommen, müsste ich wissen, wohin Du die anschließend überträgst, damit ich das verhindern kann. Oder soll A2 einfach nur gelöscht werden, wenn das Datum nicht passt?
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
20.01.2019, 13:34
Hallöchen,
das behalten eines alten Wertes würde so funktionieren. Allerdings wird dieser Code nach dem Öffnen der Datei erst nach einer Änderung von A2 weitere Änderungen verhindern. Man müsste unter DieseArbeitsmappe noch einen zusätzlichen Code einfügen, der die Variable vA2 beim Öffnen füllt. Code: Public vA2
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
20.01.2019, 17:24
Ja, da steht eindeutig Sub dabei. Und und wie bitte schön speichere ich das Makro?
Wenn ich auf "Makro" clicke, fragt mich Excel zuerst nach dem "Makronamen". Wenn ich "Einfrieren" eingebe und "Erstellen" clicke, schlägt es Sub Einfrieren() End Sub vor. Ich nehme an, dazwischen muss das Makro eingefügt werden. Also zweimal Sub/zweimal End Sub??? Oder was denn nun? Wenn ich die zwei Zeilen lösche, wird das Makro nicht gespeichert. Danke und Gruss Peter Pan
20.01.2019, 17:54
Hallo Peter,
Du wechselst in den VBA-Editor. Dort hast Du links einen Projektexplorer. Dort suchst Du z.B. die betreffende Tabelle raus und klickst da doppelt drauf - und rechts geht dann das "Makroblatt" der Tabelle auf. Dort fügst Du meinen Code ein.
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
21.01.2019, 05:55
Ok, vielen Dank, so gemacht.
Warum erscheint das Makro jetzt nicht in Entwicklertools > Makros? Weil es keinen Namen hat? Und wie kann ich das zweite Makro einfügen? Wenn ich im Projektexplorer auf das Arbeitsblatt clicke, erscheint ja das erste Makro. Und einfach anhängen geht nicht, erzeugt "Mehrdeutiger Name: Worksheet_Change". Wirklich nicht einfach. Beste Grüsse Peter Pan
21.01.2019, 07:01
Moin Peter!
Ich empfehle Dir dringend, Dir ein Buch über VBA-Grundlagen zu besorgen oder alternativ mal Online nach Tutorials zu suchen. z.B. hier: Dateiupload bitte im Forum! So geht es: Klick mich! (Kurzfassung mit lediglich 212 Seiten) Nur ganz kurz, weil hiesige Antworten niemals Deine Vorarbeit ersetzen können: Ereignismakros sind grundsätzlich Private, sie sollen ja automatisch ablaufen, deshalb sind sie auch nicht im Makro-Dialog zu sehen. Außerdem werden hier Argumente an das Makro übergeben, diese Makros sind auch dann nicht im Dialog, selbst wenn sie Public deklariert sind (oder nur Sub Irgendwas(Arg1 As Long) genannt werden, denn Public ist der default)! Ereignismakros sind vorgegeben, siehe: https://www.online-excel.de/excel/singsel_vba.php?f=160 Man darf sie nicht umbenennen oder mehrfach einfügen! Du musst dann halt den Übergabeparameter auswerten. Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius) |
|