• 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.

waarde plaatsen in een andere cel

Status
Niet open voor verdere reacties.

pliegerjp

Gebruiker
Lid geworden
6 sep 2010
Berichten
27
Bestaat in Excel een functie die het mogelijk maakt om een waarde in een andere cel te zetten?
Ik werk met drop down keuzelijsten. Deze plaatsen een waarde in een aangewezen cel, corresponderend met de positie in de keuzelijst. Omgekeerd, als je met de hand een waarde invult in deze cel, verspringt automatisch de keuze in de keuzelijst.
Ik zou graag de mogelijkheid hebben een waarde in deze cel te plaatsen. Dat kan niet met een functie in die cel, want deze wordt overschreven met een waarde zodra er een nieuwe keuze uit de lijst gemaakt wordt.
Daarom, bestaat er een functie die een waarde plaatst in een andere cel?
Dus bijvoordeeld:
in A1 een functie die bepaalt dat in A2 het getal 45 geplaatst wordt.

Heeft iemand hier verstand van?

JPP
 
Bedoel je het als volgt:
Als je in cel a1 (rode cel) iets invoert dan verschijnt dat in de cel(len) eronder.

Met vriendelijke groet,


Roncancio
 

Bijlagen

Ja! Dat bedoel ik. Maar ik snap er niets van. Er staat geen formule in A1. Hoe krijg je dat voor elkaar?

JPP
 
Ja! Dat bedoel ik. Maar ik snap er niets van. Er staat geen formule in A1. Hoe krijg je dat voor elkaar?

JPP

Er staat VBA-code in het bestand.
Deze code kun je vinden via Alt-F11 of met de rechtermuisknop op de tabbladnaam te klikken en vervolgens te kiezen voor Programmacode weergeven.
Deze code controleert of de cel die gewijzigd wordt cel A1 is.
Is dat het geval dat wordt de inhoud van A1 eronder gezet.

Met vriendelijke groet,


Roncancio
 
Ja, nu snap ik het. Ik denk dat ik de code ook begrijp zodat ik hem in mijn eigen bestand kan toepassen. Ik ga er morgen mee aan de slag.
Ik ben je grote dank verschuldigd!

JPP
 
Roncancio, ik heb toch nog meer hulp nodig. Ik heb nog drie vragen:
- de code zoekt de laatste waarde in kolom A, gaat dan 1 naar beneden en plaatst daar de waarde van A1. Is het mogelijk dat de waarde van een cel in een specifieke andere cel gezet wordt? In mijn geval moet de waarde van F24 in F12 terechtkomen.
- in F24 staat bij mij een formule. Zodra de waarde van F24 verandert moet er een ander getal in F12 gezet worden. Het lukt mij niet hem dit te laten doen. Wel als ik een getal met de hand in F24 zet.
- ik moet dit kunstje voor 16 cellen doen. Kan ik de verschillende codes gewoon onder elkaar zetten? Moet daar iets tussen gezet worden? Of moet ik voor elke code een aparte module maken? Zo ja, hoe doe ik dat?

Alvast dank voor het meedeneken.

JPP
 
Het lukt mij niet hem dit te laten doen. Wel als ik een getal met de hand in F24 zet.

Die conclusie is juist. Het Worksheet_change event heeft een trigger nodig om de code af te vuren. Deze trigger is het werkelijk editten in een cel. Een formule die wordt herberekend, is dus helaas géén trigger voor dit event. Je zal de code dus moeten laten kjken naar de cel(len) die er voor zorgt dat de formule in de genoemde cel een andere waarde krijgt. Dus zodra de BRONcel verandert zal dus ook je formule (DOELcel) worden veranderd en heb je je trigger te pakken...

Groet, Leo
 
Dan zal je gebruik moeten maken van het event Calculate.
Bijvoorbeeld:

Code:
Private Sub Worksheet_Calculate()
[f12] = [f24]
End Sub

Met vriendelijke groet,


Roncancio
 
De nieuwe code werkt wel, maar geeft een nieuw probleem: hij itereert. Hij is continue de code aan het uitvoeren. Hij moet dat alleen doen als F24 zich wijzigt. Aanpassen van het maximaal aantal iteraties bij de opties werkt niet (geldt alleen voor formules).
Door dit probleem ontstaan ook geheugen, weergave en vastloopproblemen.

Het idee van Leo om de code te laten verwijzen naar de cel die F24 oorspronkelijk triggert, zal hier niet werken: de trigger ligt verscholen in meerdere cellen.

Kortom, is er een mogelijkheid om de code alleen te laten rekenen als er een andere waarde verschijnt in F24 (waarin een formule staat)?

:thumb:Nogmaals dank dat jullie zo willen meedenken.:thumb:
 
De nieuwe code werkt wel, maar geeft een nieuw probleem: hij itereert. Hij is continue de code aan het uitvoeren. Hij moet dat alleen doen als F24 zich wijzigt. Aanpassen van het maximaal aantal iteraties bij de opties werkt niet (geldt alleen voor formules).
Door dit probleem ontstaan ook geheugen, weergave en vastloopproblemen.

Het idee van Leo om de code te laten verwijzen naar de cel die F24 oorspronkelijk triggert, zal hier niet werken: de trigger ligt verscholen in meerdere cellen.

Kortom, is er een mogelijkheid om de code alleen te laten rekenen als er een andere waarde verschijnt in F24 (waarin een formule staat)?

:thumb:Nogmaals dank dat jullie zo willen meedenken.:thumb:

Je kunt verwijzen naar cel F24.
In cel F12 zet je:
Code:
=F24
Zodra cel F24 wijzigt, wijzigt cel F12 automatisch.

Met vriendelijke groet,


Roncancio
 
Nee, het het spijt me, maar dat zal ook niet werken. Zoals ik in mijn eerste bericht schreef, is het niet mogelijk een formule in F12 te zetten; F12 moet immers overschreven kunnen worden door de keuze die in de keuzelijst gemaakt wordt. Dus:
- maak een keuze uit de lijst en er verschijnt een cijfer in F12 (daar neergezet door de lijst)
- zodra F24 zich wijzigt wordt er een ander getal in F12 gezet, waardoor de keuzelijst automatisch verspringt.

Ik hoop dat je nog kunt volgen.:confused:

JPP
 
Ik hoop dat je nog kunt volgen.:confused:

JPP

Ik hoop het ook.
Code:
Dim VWaarde As Variant

Private Sub Worksheet_Calculate()
If VWaarde <> [F24] Then
    [F12] = [F24]
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
VWaarde = [F24]
End Sub
Indien cel F24 wijzigt door een berekening, wordt cel F12 aangepast met de inhoud van F24.

Met vriendelijke groet,


Roncancio
 
En dit levert een foutmelding op: fout 28, onvoldoende stack ruimte. Geen idee wat het betekent. Excel loopt ook vast en mijn computer krijgt het erg warm.
Aan de hardware kan het niet liggen, want ik heb geheugen en processor in overvloed.

JPP
 
En dit levert een foutmelding op: fout 28, onvoldoende stack ruimte. Geen idee wat het betekent. Excel loopt ook vast en mijn computer krijgt het erg warm.
Aan de hardware kan het niet liggen, want ik heb geheugen en processor in overvloed.

JPP

Dat betekent dat er teveel geheugenruimte wordt ingenomen.
Zelf heb ik deze problemen niet.

Lukt het hiermee?
Code:
Private Sub Worksheet_Calculate()
If [F12] <> [F24] Then [F12] = [F24]
End Sub

Met vriendelijke groet,


Roncancio
 
Roncancio, het werkt feilloos! Enorm bedankt!
Dan rest er nog 1 vraag:
hetzelfde moet nu gebeuren met G24 en H24 en I24, etc t/m M24.
Het kopieren van de code, plakken onder de eerste en de cellen veranderen, werkt niet (foutmelding: dubbelzinnige naam gevonden worksheet_calculate)
Moet dat in aparte modules? Zo ja, hoe doe je dat? Of mogen ze gewoon onder elkaar staan? Hoe dan?

JPP
 
Worksheet_Calculate is een event (gebeurtenis).
Er kan maar 1 worksheet_Calculate in een project staan.
Je zult dus inderdaad de andere er gewoon onder moeten zetten.

Het zou dus zo kunnen:
Code:
Private Sub Worksheet_Calculate()
If [F12] <> [F24] Then [F12] = [F24]
If [G12] <> [G24] Then [G12] = [G24]
'etc
End Sub
..echter volgens mij kan je ook gewoon een lus gebruiken:

Code:
Private Sub Worksheet_Calculate()
Dim iKolom As Integer
    For iKolom = 6 To 13
        If Cells(12, iKolom) <> Cells(24, iKolom) Then Cells(12, iKolom) = Cells(24, iKolom)
    Next
End Sub

Met vriendelijke groet,


Roncancio
 
De tweede methode werkt prima.
Als ik dezelfde routine wil gebruiken voor rij 26 en 22 (waarde van 26 moet in 22 gezet worden, weer F t/m M). Kan ik dan het volgende doen?

Private Sub Worksheet_Calculate()
Dim iKolom As Integer
For iKolom = 6 To 13
If Cells(12, iKolom) <> Cells(24, iKolom) Then Cells(12, iKolom) = Cells(24, iKolom)
Next
Dim iKolom As Integer
For iKolom = 6 To 13
If Cells(22, iKolom) <> Cells(26, iKolom) Then Cells(22, iKolom) = Cells(26, iKolom)
Next
End Sub

??
 
Ja, maar je hoeft iKolom maar 1 keer te definiëren. Anders krijg je een foutmelding(rode regel moet dus weg)
Bovendien zou ik de lus 1 keer gebruiken. (Blauwe regel kan bij 1e For iKolom = 6 to 13 lus).
De 2e lus is dan overbodig (vetgedrukt)
Bovendien is het gebruikelijk om lussen in te laten springen zodat men kan zien hoe ze lopen.
Voor de werking van het programma maakt het niet uit maar het leest wel een stuk prettiger.

Dus ...
Code:
Private Sub Worksheet_Calculate()
Dim iKolom As Integer
For iKolom = 6 To 13
If Cells(12, iKolom) <> Cells(24, iKolom) Then Cells(12, iKolom) = Cells(24, iKolom)
Next
[COLOR="Red"]Dim iKolom As Integer[/COLOR]
[B]For iKolom = 6 To 13[/B]
[COLOR="Blue"]If Cells(22, iKolom) <> Cells(26, iKolom) Then Cells(22, iKolom) = Cells(26, iKolom)[/COLOR]
[B]Next[/B]
End Sub

.. wordt dan...
Code:
Private Sub Worksheet_Calculate()
Dim iKolom As Integer
For iKolom = 6 To 13
    If Cells(12, iKolom) <> Cells(24, iKolom) Then Cells(12, iKolom) = Cells(24, iKolom)
    If Cells(22, iKolom) <> Cells(26, iKolom) Then Cells(22, iKolom) = Cells(26, iKolom)
Next 

End Sub

Met vriendelijke groet,


Roncancio
 
Hallo,

Ik denk dat dit ook volstaat.
Code:
Private Sub Worksheet_Calculate()
Dim iKolom As Integer
    For iKolom = 6 To 13
        If Cells(12, iKolom) <> Cells(24, iKolom) Then Cells(12, iKolom) = Cells(24, iKolom)
        If Cells(22, iKolom) <> Cells(26, iKolom) Then Cells(22, iKolom) = Cells(26, iKolom)
    Next
End Sub

Met vr gr
Jack
 
Ha, met trial en error heb ik het zelf opgelost.
Nogmaals enorm bedankt voor al je hulp. Zoveel onbaatzuchtigheid kom je niet vaak tegen.

JPP
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan