• 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 x in cel y op tabblad z vervangen

Status
Niet open voor verdere reacties.

Marelli7

Gebruiker
Lid geworden
1 jul 2020
Berichten
66
Liefst zou ik dit doen zonder macro's maar dat lukt blijkbaar niet (of wel?)

Om te testen iets heel simpels:
Tabblad [1] heeft cel B3 als invoer voor het tabblad waar de waarde vervangen moet worden;
invoer in cel B4 is de waarde die de oude waarde in B4 op dat tabblad moet overschrijven.

Bijvoorbeeld: Tabblad 1 heeft B3 = 3 en B4 = 6
Actie: in het tabblad [3] moet de cel B4 de waarde 6 krijgen.

Ik ben een behoorlijke leek op het gebied van VBA, ik weet hoe het werkt maar ken de juiste syntax en functiebenamingen (nog) niet --jaja, ik zal de handleiding VBA doornemen-- nu even een snelle fix:

Dit heb ik al als code ingevoerd, maar dat gaat sowieso niet goed omdat alles vervangen wordt wat aan voorwaarde 'fnd' voldoet
Ik wil dus alleen de cel B4 in sheet/tabblad (3 in dit voorbeeld) vervangen.

Code:
Sub Vervang()

Dim sht As Worksheet
Dim fnd As Variant
Dim rplc As Variant

Set sht = Sheets("B3")     'schrijf ik dit zo goed? de waarde van B3 is het doel tabblad
set fnd =   ?????              'dat zal dan Cel B4 moeten zijn?
Set rplc = ?????               'de ingevoerde waarde van Cel B4 op tabblad 1

sht.Cells.Replace what:=fnd, Replacement:=rplc, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

End Sub
 
zo? in B4 tabblad3
PHP:
=ALS(EN(Blad1!B3=3;Blad1!B4=6);Blad1!B4;"")
 
Als je een macro gebruikt is dit al voldoende (maar inderdaad geen macro voor nodig)

Code:
Sheets([B3]).[B4] = [B4]
 
Code:
Sheets([B3]).[B4] = [B4]
Wat me hier opvalt is dat de waarde in B3 de tabvolgorde van de tabbladen is, weer wat geleerd:d
Als aanvulling voor TS een voorbeeld.
 

Bijlagen

  • vervang.xlsm
    21,6 KB · Weergaven: 37
zo? in B4 tabblad3
PHP:
=ALS(EN(Blad1!B3=3;Blad1!B4=6);Blad1!B4;"")

Dit werkt niet zoals ik zou willen: als ik op Blad1 in cel B3 een andere waarde zet (bijvoorbeeld 4 - voor blad 4) dan geldt deze voorwaarde niet meer en verdwijnt de eerdere invoer uit blad 3. De bedoeling is dat er een blijvende vervanging is na invoer op het "hoofdtabblad" 1 (of Blad1) op het aangegeven tabblad.
Dus als ik aangeef: verander de waarde van Cel B4 op tabblad 3 in 6 dan moet dat zo blijven. Daarna zal ik de waarde van Cel B4 in tabblad 4 willen veranderen in 99 ofzo
 
Code:
Sheets([B3]).[B4] = [B4]
Wat me hier opvalt is dat de waarde in B3 de tabvolgorde van de tabbladen is, weer wat geleerd:d
Als aanvulling voor TS een voorbeeld.

de macro doet bij mij niet wat het zou moeten doen. Als ik in cel B3 de waarde 4 invul (voor blad 4) dan zie ik niet dat de waarde van B4 op dat tabblad 4 veranderd.
Daarbij is de macro niet wat ik denk dat het moet zijn (kom nu wel weer verder, thnx). Het is ook wat te beperkt.

De waarde van B3 kan alles zijn en de waarde van B4 ook. Dus met een IF/AND ben ik nog even aan het schrijven. Een switch/case optie zou mooi zijn
Dus zoals het onderwerp al zegt: als ik de waarde X van cel Y in blad Z wil vervangen dan wil in in Blad1 invoeren: in cel B3 'Z' (het betreffende blad) en in cel B4 'Y' ( de vervangende waarde)
of
8
99
==> op Blad!8 krijgt cel B4 de waarde 99
 
@AD, inderdaad! Ik moest even twee keer kijken:shocked: Wist dat ook nog niet
 
kijk maar of je hier iets mee kunt.
 

Bijlagen

  • vervang(1).xlsm
    27,6 KB · Weergaven: 35
De waarde van B3 kan alles zijn en de waarde van B4 ook

Dan zou ik gewoon deze gebruiken om verwarring te voorkomen

Code:
Sub j()
Sheets(Range("B3").Value).Range("B4") = Range("B4").Value
End Sub
 
kijk maar of je hier iets mee kunt.

Zowel op mijn mac als windows computer -beide office 365- werken de knoppen niet. ik zie wel je code in VBA en is de koppeling knop-code OK. Ik krijg een foutmelding: kan niet worden uitgevoerd. macro niet beschikbaar of macro's zijn uitgeschakeld. De optie Macrobeveiliging staat op uitvoeren zonder melding
 
Bij mij werkt het gewoon, geen idee waar het fout gaat.
Even wachten op de specialisten.
 
Post #9 al getest?
 
Plaats het bestand met de toegepaste code even.
 
Laatst bewerkt:
nog een optie.
 

Bijlagen

  • vervang(2).xlsm
    31,3 KB · Weergaven: 36
Albert, er is een versie conflict met je laatste vervang(2).xlsm
blijkbaar zit er ergens verschil tussen de verschillende office 365 excel versies. Werk jij met een Engelse versie?

de VBA code geeft foutmeldingen. waarschijnlijk omdat de combobox niet geïmporteerd wordt. Maakt niet uit, want je idee zal ik niet toepassen.
'Blad1'!B3 krijgt een waarde X uit een ander invoerveld op een ander tabblad; die waarde X verwijst naar het betreffende tabblad 'X'!. De waarden op dat blad bepalen de velden op Blad1. De gegevens die de gebruiker invoert moeten worden overgezet naar blad X. Een keuzeveld is dan niet handig. "Als je begrijpt wat ik bedoel"
Overigens valt me op dat Sheets ([B3]).[B4] verwijst naar het n-de tabblad. Dus als B3=4 dan zal het 4e tabblad een waardevervanging krijgen, ook al is de naam van het tabblad 'BlaBla99'

Maar jullie tips zijn zo nuttig dat ik er mee verder kan.
Lastiger zal worden dat een .xlsm bestand problemen gaat opleveren bij openen door gebruikers, velen hebben de macro-functie uitstaan of wordt geblokkeerd omdat het zal worden aangemerkt onveilig.
 

Bijlagen

  • fout 438.pdf
    23,1 KB · Weergaven: 38
Laatst bewerkt:
Overigens valt me op dat Sheets ([B3]).[B4] verwijst naar het n-de tabblad. Dus als B3=4 dan zal het 4e tabblad een waardevervanging krijgen, ook al is de naam van het tabblad 'BlaBla99'
zie #6 en #7
Heb je al iets gedaan met #9
Plaats eens een goed gelijkend voorbeeldbestand.(zie #13)
 
Als ik het goed begrijp dan heb je aan de code van JVeer in #9 voldoende.
 
#6, 7 en 9 ga ik zo eens uitproberen.

ik heb geen voorbeeldbestand anders dan waar jullie mee komen. Mijn doelbestand is groot (9 Mb) en nog een intern bestand wat ik niet met jullie mag/kan delen
 
We vragen niet om het complete doelbestand maar om een goed gelijkend voorbeeldbestand met fictieve gegevens.
 
Als ik het goed begrijp dan heb je aan de code van JVeer in #9 voldoende.

Klopt!!
Code:
Sheets("Blad1").ComboBox1.List = ArraySheets
Doet precies wat het voor mij moet doen.

Voor mijn doel zal ik de Range moeten laten lopen van B3:B125 (ik noem nu maar even wat).
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan