Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Formel ignorieren
#11
Nächster Versuch.


Angehängte Dateien
.xlsm   Test_Zirkelbezug.xlsm (Größe: 15,04 KB / Downloads: 2)
Antworten Top
#12
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 Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#13
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


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#14
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
Antworten Top
#15
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)
Antworten Top
#16
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
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$A$2" And vA2 = "" Then
  vA2 = Target.Value
Else
  Target.Value = vA2
End If
Application.EnableEvents = True
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#17
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
Antworten Top
#18
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)
Antworten Top
#19
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
Antworten Top
#20
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)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste