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

2 cellen synchroniseren (in beide richtingen) via vba

Status
Niet open voor verdere reacties.

Berter

Gebruiker
Lid geworden
9 apr 2023
Berichten
13
Ik zou willen dat als ik in blad 1 A1 iets typ, dat dit dan ook in blad 2 B1 komt. Maar ook omgekeerd als ik in blad 2 B1 iets typ dat dit dan in blad 1 A1 komt. Via vba, dus iet via formule want die zal gewist worden als ik er iets in typ
 
deze achter Blad 1:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
    Application.EnableEvents = False
    Sheets("Blad2").Cells(1, 2) = Target
    Application.EnableEvents = True
End If
End Sub

En deze dan achter Blad 2:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then
    Application.EnableEvents = False
    Sheets("Blad1").Cells(1, 1) = Target
    Application.EnableEvents = True
End If
End Sub
 
En dan natuurlijk de basisvraag:

Waarom 2 keer dezelfde gegevens in 1 bestand ?
 
@SjonR

Ook het werkboek heeft gebeurtenissen:

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

End Sub
 
Via chatGPT meerdere oplossingen gevonden, steeds met een ditje of datje of foutmelding

Uiteindelijk :
[FONT=Söhne]ik vroeg : Idem. Werkt, doch foutmelding. Ik denk dat probleem ligt bij feit dat andere cel die veranderd wordt, op zich dan ook de eerste cel weer wil veranderen

[/FONT][FONT=Söhne]
Antwoord ChatGPT


Als u een foutmelding krijgt en de code lijkt correct, kan het probleem inderdaad zijn dat de code een oneindige lus creëert. Dit kan gebeuren als de code een cel verandert die de gebeurtenis van de andere werkbladmodule activeert, waardoor de code opnieuw wordt uitgevoerd en opnieuw de cel verandert, enzovoort.
Om dit op te lossen, kunt u de Application.EnableEvents-eigenschap gebruiken om tijdelijk te voorkomen dat de gebeurtenis opnieuw wordt geactiveerd tijdens de code.
Probeer de volgende code in de modulewerkbladen:
In het modulewerkblad van Blad1:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.EnableEvents Then Exit Sub ' Voorkom oneindige lus
If Target.Address = "$A$1" And Target.Parent.Name = "Blad1" Then
Application.EnableEvents = False ' Schakel gebeurtenissen uit
Worksheets("Blad2").Range("B1").Value = Target.Value
Application.EnableEvents = True ' Schakel gebeurtenissen weer in
End If
End Sub


In het modulewerkblad van Blad2:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.EnableEvents Then Exit Sub ' Voorkom oneindige lus
If Target.Address = "$B$1" And Target.Parent.Name = "Blad2" Then
Application.EnableEvents = False ' Schakel gebeurtenissen uit
Worksheets("Blad1").Range("A1").Value = Target.Value
Application.EnableEvents = True ' Schakel gebeurtenissen weer in
End If
End Sub




De Application.EnableEvents-eigenschap wordt hier gebruikt om te voorkomen dat de gebeurtenis opnieuw wordt geactiveerd tijdens het bijwerken van de andere werkbladmodule. Door deze eigenschap tijdelijk uit te schakelen, wordt voorkomen dat de code een oneindige lus creëert.

[/FONT][FONT=Söhne]Ik heb aan chatgpt ook gevraagd de code te schrijven indien deze 2 cellen een naam zouden krijgen. Als iemand die code wil, laat het maar weten[/FONT][FONT=Söhne]

[/FONT]
 
Laatst bewerkt:
Als Chat dan zo goed is blijf het dan daar vragen.
De mensen hier doen toch moeite om je te helpen maar volgens mij heb je er geen één geprobeerd, of je vermeld het niet.
En dan nog de specialisten hier schrijven een betere en kortere code dan die computer.

Groetjes
Johan
 
Laatst bewerkt:
@SjonR
@snb

Ik had zitten zoeken via Chatgpt, voor ik het antwoord hier had.
Probleem was dat men in lus terecht kwam. Dit werd uiteindelijk opgelost.
Zo dacht ik dat ik met de code van SjonR ook in lus zou komen, omdat die "[FONT=Söhne]Application.EnableEvents" er niet in stond

[/FONT]
Ik heb nu die code van SjonR geprobeerd en die werkt perfect ! Inderdaad simpel en zeer goed ! ! ! Dank je wel. Ik ga die gebruiken van SjonR.[FONT=Söhne]

en nu valt mij het binnen :

ik had aan chatgpt gevraagd of de code kon aangepast worden naar naam v cel (ik gaf die cellen elke een naam) De code werkte dn ook. Maar ! Als ik boven 1 v die 2 cellen rijen invoegde kreeg ik foutmelding. Vervolgens kreeg ik dan andere code die ik hierboven heb gezet.

[/FONT]
@SjonR : zou je jou code willen aanpassen aan de namen : voor A1 bvb naam "invul1" en voor B2 op blad 2 bvb "invul1bis". En kijk je dan ook eens als verplaatsen van 1 van die cellen of er rijen boven aantoevoegt dat je geen foutmelding krijgt?
Niet dringend hoor en alvast bedankt (hulp van een professioneel is idd veeeel beter dan die chatbox.

De reden dat ik dit nodig heb is dat ik soms verschillende formulieren (met een norm) (elk een werkblad) moet invullen, waar dezelfde vraag staat (verschillende normen die gelijkenissen hebben)
 
Laatst bewerkt:
Plaats eerst maar even een voorbeeldbestand, dat maakt het wat makkelijker.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan