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

celverwijzing, koppeling met cel

Status
Niet open voor verdere reacties.

combinatietang

Gebruiker
Lid geworden
24 mrt 2008
Berichten
48
Ik wil in één en dezelfde cel zowel de mogelijkheid hebben om een waarde over te nemen uit een andere cel, als om zelf een waarde in te voeren.
Voorbeeld: ik wil dat cel A1 standaard de waarde overneemt van cel A2, maar daarnaast wil ik ook de mogelijkheid hebben van een vrije invoer. Dus dat ik zelf de waarde in cel A1 opgeef.
De verwijzing "=A2" werkt in dat geval niet, want die zou gewist worden bij een vrije invoer. Is hier een oplossing voor?
 
Dat kan alleen met Vba.
In je worksheetmodule.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2")) Is Nothing Then
 Range("A1") = Target.Value
End If
End Sub
 
Dag Harry,

In mijn excel-document wil ik bij 4 cellen de mogelijkheid hebben van zo een vrije invoer. Dus ik kopieerde je script 4x, paste de celverwijzigingen aan, en dat werkte.
Ik vroeg me echter af of er geen elegantere code was dan telkens je script te kopiëren. Misschien kun je daar nog op antwoorden. Ik elk geval ben ik blij met je hulp, want het resultaat is perfect. Het scriptje doet wat het moet doen.

Met vriendelijk groet,

Combinatietang
 
Laatst bewerkt:
Het zou zo kunnen.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2:D2")) Is Nothing Then
 Target.Offset(-1, 0) = Target.Value
End If
End Sub

De code doet hetzelfde als de vorige code, alleen geldt deze nu voor het bereik A2 t/m D2.
Wijzig je een cel in dat bereik dan krijgt de cel erboven dezelfde waarde.

Met vriendelijke groet,


Roncancio
 
Dag heren,

Helaas, ik ben er net achter gekomen dat jullie codes toch niet doen wat ik had verwacht. In cel A2 staat namelijk een formule en de code moet de waarde van die formule plaatsen in cel A1. Als de formule een nieuwe waarde opgeeft wordt die echter niet meer automatisch aangepast in cel A1. Dit gebeurt pas als ik zelf in cel A2 ben geweest, bijvoorbeeld met F2. Kortom, als ik niet in de cel ben geweest heeft de code niet in de gaten dat de waarde is gewijzigd. Is dit op te lossen? Alvast bedankt voor het meedenken.

Met vriendelijke groet,

Combinatietang
 
Laatst bewerkt:
In VBA kan je de code laten draaien bij het herberekenen van het werkblad maar dan worden de waardes in de vrije invoer overschreven.
Hoe moet VBA zien welke waardes wel moeten worden overschreven en welke niet?

Met vriendelijke groet,


Roncancio
 
Anders moet je deze eens testen:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("A1:D1")) Is Nothing Then
  If Target = "" Then
   Target = Target.Offset(1, 0)
  End If
 End If
End Sub

Als je een cel in het bereik A1:D1 leegt wordt de waarde uit de cel eronder overgenomen.
 
Ik heb een voorbeeld bijgevoegd van hoe ik de celverwijzing wil gebruiken.
Dus als de code daarin werkt, dan is het probleem opgelost.
In het voorbeeldbestand heb ik overigens de code weggelaten.
Bekijk bijlage voorbeeld celverwijzing.xlsx

Met vriendelijke groet,


Combinatietang
 
Laatst bewerkt:
Het werkt nog niet helemaal Cobbe. Als ik in het keuzemenu kies voor de optie "onbepaald (vrije invoer)" moet ik handmatig een waarde kunnen invoeren voor cel F3. Maar dat lukt me niet.
Weet je hier nog een oplossing voor? Ik ben benieuwd.

Met vriendelijke groet,


Combinatietang
 
De code in het excel-bestand dat Rocancio hiervoor gepost heeft werkt.
Als ik in het keuzemenu kies voor de optie "onbepaald (vrije invoer)" kan ik handmatig de waarde in cel F3 overschrijven.
Is het echter ook mogelijk dat de cel eerst automatisch leeggemaakt wordt, voordat ik een waarde invul? Of wordt het dan te complex?

Combinatietang
 
Ik wil iedereen bedanken die gereageerd heeft, maar in het bijzonder Rancancio. Jouw code doet precies wat ik wil.
Deze code ga ik op meerdere plaatsen in mijn document gebruiken.

Met vriendelijke groet,

Combinatietang
 
In bijgevoegd excel bestand zijn twee keuzemenu's. Het 1e keuzemenu is werkend gemaakt met de code van Rocancio, het 2e keuzemenu moet op dezelfde wijze werken.
Dat is mij niet gelukt. Ik ben niet goed genoeg thuis in VB. Als jullie me willen helpen om ook het 2e keuzeveld werkend te krijgen, ga ik ervan uit dat ik de structuur herkend en dus de code zelf kan uitbreiden waar nodig. Bekijk bijlage voorbeeld celverwijzing (cobbe).xlsm

Met vriendelijke groet,

Combinatietang
 
Laatst bewerkt:
Dit werkt niet Cobbe. Als ik in het 1e keuzemenu kies voor de optie "onbepaald (vrije invoer)" moet ik handmatig een waarde kunnen invoeren voor cel F2. Dat gaat nu niet meer.
Als ik in het 2e keuzemenu kies voor de optie "onbepaald (vrije invoer)" moet cel F3 leeggemaakt worden zodat ik handmatig een waarde kan invullen. Automatisch leegmaken gebeurt niet meer.

Met vriendelijke groet,

Combinatietang
 
Sorry even niet goed opgelet maar deze aanpassing zal wel het nodige doen:

Code:
Dim iKeuze As Integer
Private Sub Worksheet_Calculate()
 If Range("buitenblad") < 4 Then
  [f2] = Range("lamda")
 ElseIf Not iKeuze = Range("Buitenblad").Value Then
  [f2] = ""
 End If
iKeuze = Range("buitenblad")
 
 If Range("isolatie") < 5 Then
  [f3] = Range("lamda2")
 ElseIf Not yKeuze = Range("Isolatie").Value Then
  [f3] = ""
 End If
yKeuze = Range("isolatie")

End Sub
'
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Application
    .EnableEvents = False
    .EnableEvents = True
    .CalculateFull
End With
End Sub
 
Dag Cobbe,
Ik heb je code getest. Keuzemenu 1 werkt nu goed, maar bij keuzemenu 2 kan ik niet handmatig een waarde invoeren als ik kies voor de optie "onbepaald (vrije invoer)"

Met vriendelijk groet,

combinatietang
 
Dag Cobbe,
Ik heb op internet opgezocht wat de functie "Dim" betekende en toen de regel " Dim iKeuze As Integer" gewijzigd in "Dim iKeuze As Integer, yKeuze as Integer".
Je code werkt nu. Ik kan nu mijn excel-document zelf uitbreiden met meerdere keuzemenu's. Daarvoor begrijp ik de code nu goed genoeg, dus dankjewel voor al je hulp.

Met vriendelijke groet,

Combinatietang
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan