Cel selecteren in VBA op basis van andere cel

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • RvdP0
  • Registratie: Juni 2022
  • Laatst online: 25-07-2022
Goedemorgen,

Ik ben bezig om een urenoverzicht zo ver mogelijk te automatiseren. In Excel zou een medewerker éénmalig alle informatie moeten invullen en zolang er geen gegevens wijzigen (los van de periode) zouden deze moeten worden ingevuld in de juiste cel. Aangezien de hoeveelheid dagen afwijken in een maand, kan ik niet uitgaan van een vaste offset formule in VBA. Onder de tabellen komen namelijk nog de dagen te staan van de maand. Onderstaand de tabellen nog zonder de dagen.

Afbeeldingslocatie: https://tweakers.net/i/yOJ42--PXpTcTPvkKfaWaD4YPv0=/800x/filters:strip_exif()/f/image/BrsmGEsiRkuokwZtIQkymULi.png?f=fotoalbum_large

Om Offset te kunnen gebruiken zal ik dus een code nodig moeten hebben die zoekt naar cel E2 onder de eerste tabel en deze vervolgens selecteert. Onderstaande code werkt niet, omdat de variabele Periode_cel geen waarde herkend. Ik snap alleen niet waarom. Als in E3 bijvoorbeeld januari 2022 is ingevuld zou de variabele E9 moeten worden en als de medewerker de periode wijzigt naar februari 2022 in E3 zou de variabele E14 moeten worden in VBA.

Afbeeldingslocatie: https://tweakers.net/i/SSLdaTOc-Y97xF3uGdHJKNPz8Ys=/800x/filters:strip_exif()/f/image/yHwoe2r3s8Igsqw8AbnSASYI.png?f=fotoalbum_large

Weet iemand waardoor de code niet werkt?

Beste antwoord (via RvdP0 op 12-06-2022 17:46)


  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Methode hoe je je probleem kunt oplossen:
Geef alle rechthoeken een naam: de eerste noem je bv. 'invoer', en alle andere geef je de namen van de maanden (jan, feb, mrt, enz.). Gebruik hierbij dezelfde tekst als in de validatielijst.
In de "Private Sub Worksheet_Change" moet je dan alleen maar bepalen welke maand er in "invoer" staat, en dan de gegevens van 'invoer' naar de betreffende maand (de rechthoek die de naam van de maand heeft) kopiëren.

[ Voor 6% gewijzigd door dix-neuf op 12-06-2022 15:23 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Ik zie 3 dezelfde rechthoeken (zijn er nog meer?).
Als de bovenste rechthoek wordt ingevuld, moeten de ingevulde gegevens dan automatisch in rechthoek 2 en 3 worden overgenomen? Dat is wel te realiseren, alhoewel het nut daarvan mij niet meteen duidelijk is.

Acties:
  • 0 Henk 'm!

  • RvdP0
  • Registratie: Juni 2022
  • Laatst online: 25-07-2022
@dix-neuf Voor iedere maand is er een rechthoek. Als de eerste rechthoek is ingevuld moet er op een knop gedrukt worden met de macro om de gegevens in de juiste blokken te zetten. In de andere blokken is dus alleen de periode ingevuld.

Bijvoorbeeld: Medewerker heeft al eens het eerste blok aan gegevens ingevuld en hoeft alleen de periode te veranderen van januari 2022 naar februari 2022. Door op de knop te drukken worden de gegevens vervolgens alleen in het blok met februari 2022 ingevuld. De macro moet dus kijken naar E3 en op basis van die cel kijken welke rechthoek hij moet invullen. Als variabele Periode_cel E9 zou zijn als cel E3 "januari 2022" is zou dit hopelijk werken.

De medewerker hoeft hierdoor niet iedere maand de gegevens handmatig in te vullen, maar kan wel wijzigingen doorvoeren als dat nodig is.

Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
1. Als op basis van E3 gekozen moet worden welke van de 12 rechthoeken moet worden ingevuld, dan moet je in E3 de maandkeuze wel via validatie laten kiezen; dit om fouten te voorkomen. Want als ik het goed begrijp, bepaalt E3 welke van de 12 (andere) rechthoeken wordt ingevuld of gewijzigd.

2. Als je met vba werkt, moet je bij voorkeur niet met samengevoegde cellen werken (zoals in de kolommen E:H is gebeurd). Dat is vragen om moeilijkheden en het samenvoegen is ook niet per se nodig.

3. Om te voorkomen dat in geen andere rechthoek dan in de bovenste gegevens kunnen worden ingevoerd/gewijzigd, moet je het blad (de bewuste rechthoeken) beveiligen.

4. Je probeert om met FIND een cel te zoeken en die te selecteren; dat lijkt mij niet de beste weg. Je kunt m.i. beter via een Worksheet_Change-event de gewijzigde gegevens uit de bovenste tabel naar de rechthoek van de betreffende maand kopiëren.

[ Voor 16% gewijzigd door dix-neuf op 12-06-2022 15:10 ]


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Methode hoe je je probleem kunt oplossen:
Geef alle rechthoeken een naam: de eerste noem je bv. 'invoer', en alle andere geef je de namen van de maanden (jan, feb, mrt, enz.). Gebruik hierbij dezelfde tekst als in de validatielijst.
In de "Private Sub Worksheet_Change" moet je dan alleen maar bepalen welke maand er in "invoer" staat, en dan de gegevens van 'invoer' naar de betreffende maand (de rechthoek die de naam van de maand heeft) kopiëren.

[ Voor 6% gewijzigd door dix-neuf op 12-06-2022 15:23 ]


Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Je probleem is kennelijk opgelost, maar hoe ziet je code er uit ?
Pagina: 1