• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

De uitkomst van een formule in een cel gebruiken als een handmatige invoer

Status
Niet open voor verdere reacties.

PETER1046

Gebruiker
Lid geworden
3 sep 2016
Berichten
18
Ik heb een probleem, ik gebruik de uitkomst van een formule in een cel om een script aan te sturen.
Als ik in de zelfde cel de waarde met de hand invul dan werk het, echter als de waarde ontstaat uit het
resultaat uit een formule dan werkt het niet .

Hoe los ik dit op ?

Bedankt voor de reactie.

laat ik het anders formuleren,
Hoe voeg ik een "return" aan de uitkomst van een formule in een cel toe.
 
Laatst bewerkt:
Maak gebruik van de Calculate_event ipv de Change_event.
 
Bedankt voor de reactie.

laat ik het anders formuleren,
Hoe voeg ik een "return" aan de uitkomst van een formule in een cel toe.

Dat zou ook een oplossing zijn voor mijn probleem
 
Hierbij een voorbeeld

Ik heb in de bijlage een voorbeeld van mijn probleem.

Ik wil dat als ik in D2 de waarde verander in 8
dat in A2 de waarde 10 komt te staan.

Mij korte script werkt wel als in in A1 direct de waarde 10 plaats.
 

Bijlagen

Je hebt in cell A1 al "=D4" staan.
Dan verplaats je toch die naar cel A2?

Groetjes Peenvogel
 
Bedoel je zo?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(False, False) = "D2" Then
    Range("A" & Rows.Count).End(xlUp).Offset(1, 0) = Range("D4").Value
End If
End Sub
 
Bijna goed, echter ik wil dat als de waarde van D7 veranderd door dat er in D2 een waarde wordt ingevuld, het script wordt aangestuurd door wat in A1 komt te staan vanuit D4
 
Sorry correctie ,.. Bijna goed, echter ik wil dat als de waarde van D4 veranderd door dat er in D2 een waarde wordt ingevuld, het script wordt aangestuurd door wat in A1 komt te staan vanuit D4
 
Die logica ontgaat me.
A1 is gelijk aan D4 door de verwijzing in A1: =D4.
Of de uitkomst van D4 of A1 wegkomt blijft lood om oud ijzer.


Maar goed,
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$2" Then
    Range("A" & Rows.Count).End(xlUp).Offset(1) = Range("A1").Value
End If
End Sub
 
Bedankt voor het mee denken, echter ik heb moeite mijn probleem onder woorden te brengen.

Nog een poging:

Ik wil dat de uitkomst, die ontstaat uit simpele een formule ( in dit geval D2+D3 ) resultaat in D4
gebruikt wordt om een klein script aan te sturen, in dit geval komt de waarde van D4 in A1 terecht
en zou het script dan de waarde 6 in A2 moeten zetten, echter dat krijg ik niet voor elkaar.

Het werkt wel, het als je de waarde 6 met de hand in A1 plaatst en op enter drukt.
resultaat: waarde 6 komt in A2.
 

Bijlagen

Ik gok dat je dit voor ogen hebt...
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address(False, False) = "D2" Then
    Range("A" & Rows.Count).End(xlUp).Offset(1, 0) = Range("A1").Value
End If
Application.EnableEvents = True
End Sub
 
Nog niet helemaal goed, ik wil dat de waarde die in D4 ontstaat het script aanstuurt, nu is dit de waarde in D2
 
Ehhhhh.... de optelling verandert doordat je cel d2 aanpast. Dan is DAT toch je Change Event???
 
Nee, dat is niet de bedoeling. Het script moet reageren op de verandering in D4 doordat je een waarde in D2 invult.

[1] als ik direct de waarde verander in A1, ( b.v. van 6 naar 8 ) dan komt die waarde in A2, en bij de volgende verandering in A3,... enz. ( dat werk dus )
[2] als ik echter de waarde in D2 verander, met als resultaat dat de waarde in D4 veranderd, welke wordt overgenomen door A1, dan werkt het dus niet.

Je zou verwachten dat dit het zelfde resultaat oplevert,.... dus niet.
Ik denk dat het probleem zit in de "return" die je bij [1] gebruikt om de waarde te activeren, bij [2] wordt deze schijnbaar niet automatisch gegenereerd.

Het lijkt simpel, echter ik zie even niet een oplossing.......

vast bedankt voor het meedenken.
 
Máár je kan de waarde in cel A1 helemaal niet handmatig aanpassen! Dát is een directe celverwijzing naar cel D4....
 
Ik doe ook nog maar een poging omdat ik het niet helder krijg.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 Application.EnableEvents = False
 Application.Undo
   old = Range("d4").Value
 Application.Undo
    If Target.Address(0, 0) = "D2" Then
     If Range("D4").Value <> old Then
        Range("A" & Rows.Count).End(xlUp).Offset(1) = Target
      End If
    End If
Application.EnableEvents = True
End Sub
 
Bedankt voor de aangedragen oplossingen.

Bij alle aangedragen oplossingen wordt steeds D2 in het script opgenomen.
Vergeet D2, het gaat om de waarde die in D4 ontstaat ( resultaat optelling van D2+D3 )

De waarde die in D4 ontstaat, in dit voorbeeld, is repenstatief voor de waarde die uit elke willekeurige formule kan ontstaan.

Ik probeer met de rekenkundige eind waarde uit een willekeurige formule een script aan te sturen,
vandaar dit voorbeeld scrip en voorbeeld spreadsheet, waarbij ik simpel twee waardes optel, en het resultaat
gebruik om het voorbeeld script aan te sturen.
 
Code:
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
 Application.Undo
   old = Range("D4").Value
 Application.Undo
     If Range("D4").Value <> old Then
        Range("A" & Rows.Count).End(xlUp).Offset(1) = Range("D4").Value
      End If
Application.EnableEvents = True
End Sub
 
Peter1046, Waarom hou je nou zo vast aan de uitkomst van een formule??? Die uitkomst is een gevolg van een mutatie in 1 van de cellen die opgenomen is in zo'n formule. Dan kan je toch véél beter triggeren op zo'n mutatiecel want DAAR is een goed event voor. Tuurlijk kan je verder werken met het Calculate-Event, maar waarom??? Het enige dat ik me kan voorstellen, is dat je nu een heel erg "mank" voorbeeld hebt aangeboden dat helemaal niet strookt met je werkelijke workbook. Dus dat er in werkelijkheid véél meer cellen verantwoordelijk zijn van de uitkomst van die formule....

[EDIT] Ah... HSV gaat de discussie al niet meer aan zie ik... (ha ha ha... :D)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan