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

Formules plaatsen in cellen als in andere cel (zelfde rij) een 0 staat

Status
Niet open voor verdere reacties.

trainers

Verenigingslid
Lid geworden
8 feb 2012
Berichten
209
Office versie
MS 365
Hoe (middels een macro) plaats ik formules in cellen als in een andere cel (zelfde rij) een 0 staat.
Bijgaand een opzet. Met maar 18 situaties doe je het wellicht even handmatig. In werkelijkheid gaat het echter om honderden regels.

De gebruiker van het programma kan prima getallen invoeren doch een als-formule dan wel het kopiëren van formules is echt een stap te ver.
Vandaar dat ik - eigenlijk alles behalve het invoeren - wil automatiseren.

Alvast mijn dank voor jullie meedenken en tijd.

Groeten,
Trainers
 

Bijlagen

Even naar de uitleg in je sheet
citaat:
Hoe krijg ik met een macro de formules E2 en F2 alleen in de cellen kolom E resp. F als in kolom H een 0 staat.

Alternatief:
Wellicht dat het makkelijker is om alleen de cellen E en F (als in kolom H een 1 staat) om te zetten in waarden.
De macro genoemd in J5 vervalt dan uiteraard.


hier ligt wel een cruciale keuze, kennelijk wil je vaste waarden als er 1 in H staat.
Maar wat betekent die 1? betekent dat dat die regel is afgerond en dat het daarom niet meer zal wijzigen of mag wijzigen

Als het antwoord daarop Ja is dan is het logische om een macro te maken die zorgt dat als je in kolom H een 1 zet dat dan de waarden in E en F omgezet worden naar waarden. Dan kun je dat doen met een worksheet change event macro zodat het gelijk gebeurd zodra je kolom H op 1 zet.

Tegelijkertijd als de waarden in kolom H weer terug kunnen naar 0 dan heb je beide varianten nodig om ofwel een waarde ofwel een formule in de cel te zetten.

Kun je daar iets meer over zeggen hoe de sheet gebruikt zal gaan worden?
 
Hoi Roel,

Dank voor je reactie.
De 0 c.q. 1 in H is een resultante van een formule. Ik denk dat het "alternatief" sneller zal kunnen werken omdat dit er veel minder zijn.
In feite zijn de formules in E en F afhankelijk van een basiswaarde, die als in H een 0 staat kan wijzigen maar de waarde (als er een 1 staat) niet meer.

Maar wat betekent die 1? betekent dat dat die regel is afgerond en dat het daarom niet meer zal wijzigen of mag wijzigen Correct.
Als de waarde eenmaal 1 is mag deze niet meer wijzigen.

Hoop hiermee mijn vraagstelling wat duidelijker is.

Groeten,
Trainers
 
Is dit voorbeeld representatief? Ik vind het nogal een chaos. Welke gebruiker wil er met zoiets werken?:confused:
 
Neen, dit voorbeeld is absoluut niet representatief maar mag het origineel niet plaatsen (teveel persoonlijke informatie van derden).
Het is uitsluitend een voorbeeld om de vraagstelling te verduidelijken.
 
Persoonlijke informatie kan je ook aanpassen in fictieve gegevens. Dus is een kul argument om geen representatief voorbeeld te plaatsen. VBA is vaak maatwerk en het steeds maar weer moeten aanpassen omdat het voorbeeldbestand toch nergens op lijkt kost onnodige inspanningen. Anders het je het met de suggestie van @roeljongman om het dmv een worksheet change event toch zelf al kunnen oplossen?
 
Zijn kolom A en rij 3 in werkelijkheid ook leeg?
M.a.w. de gegevens staan zoals in je voorbeeld?
 
Hoe dat met een worksheet change event zou moeten werken weet ik niet. Het fenomeen worksheet change event ken ik doch dan nog moet hier wel code in staan. En dat is nu net het probleem.
Overigens is het de bedoeling dat het met een macro (die alleen onder bepaalde condities kan worden uitgevoerd) geschiedt.

Ik zal morgen proberen een geanonimiseerde versie van het betreffende werkblad te plaatsen. Alvast mijn dank voor het meedenken.

Groeten,
Trainers
 
WOW.
Dat werkt als een tierelier.

Denk dat ik dit wel kan vertalen naar mijn situatie.

Mijn dank :thumb: en ik zal e.d.d. melden of het gelukt is.

Groeten,
Trainers
 
Waarom negeer je #6 en #7? Zo gaat het waarschijnlijk wat sneller.
Code:
Sub VenA()
  ar = Range("E2:F2").FormulaR1C1
  ar1 = Cells(4, 5).CurrentRegion.Resize(, 4)
  For j = 1 To UBound(ar1)
    If ar1(j, 4) = 0 Then
      ar1(j, 1) = ar(1, 1)
      ar1(j, 2) = ar(1, 2)
    End If
  Next j
  Cells(4, 5).CurrentRegion.Resize(, 4) = ar1
End Sub
 
@sylvester-ponte
Het is gelukt om de code te vertalen naar mijn situatie en werkt perfect. Nogmaals mijn dank. :thumb::thumb:

@VeA
"Waarom negeer je #6 en #7?".
Mijn excuses doch meende dat ik in #8 had gereageerd door te schrijven dat ik een geanonimiseerde versie van het betreffende werkblad zou plaatsen.

Dank voor je code. Omdat ik 'Option Explicit' gebruik heb ik in de macro opgenomen:
Code:
Dim ar As Range
Dim ar1 As Range
Dim j As Integer
Echter bij de UBound wordt een compileerfout geconstateerd (Er wordt een matrix verwacht).

Groeten,
Trainers
 
As Range weglaten of:
Code:
Dim ar [COLOR=#ff0000]as variant[/COLOR]
Dim ar1[COLOR=#ff0000] As variant[/COLOR]
 
Dank je wel. :thumb:

En inderdaad, de code van VenA werkt net iets sneller. Allen bedankt, ik kan weer verder met mijn prog.

Groeten,
Trainers
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan