VBA code automatisch aanpassen bij invoegen extra rijen in excel

Status
Niet open voor verdere reacties.

Peetreg

Nieuwe gebruiker
Lid geworden
31 dec 2021
Berichten
3
Hallo,
Ik ben een VBA beginner en loop tegen een probleempje aan. Ik hoop hier een oplossing te vinden.

Ik werk aan een standaard excel (gegevens en selectie) bestand dat ik wil delen met anderen, om vervolgens toe te passen voor meerdere specifieke situaties.
Het standaard bestand geeft alle mogelijke opties die voor kunnen komen (voor de geïnteresseerden: de decompositie volgens de NEN2767 - conditiemeting gebouwde omgeving). In de specifieke situaties zijn alleen niet alle opties van toepassing.

In het bestand is het vervolgens de bedoeling dat gegevens verzameld worden onder subgroepen (bouwdelen) die vallen onder hoofdgroepen (elementen).

x801MMrB6DbcwAAAABJRU5ErkJggg==



Ik heb een keuze veld (ja/nee) gemaakt per hoofdgroep. Is de hoofdgroep in het specifieke geval niet aanwezig, dan is het de bedoeling dat de gebruiker kiest voor "nee" waarna de subgroepen horend bij die hoofdgroep verborgen worden en de hoofdgroep grijs wordt. Zie volgende stukje code:

Private Sub Worksheet_Change(ByVal Target As Range)
'101 - Aandrijving en bewegingswerk Elektrohydraulisch


If Range("H9").Value = "Nee" Then
Rows("10:51").EntireRow.Hidden = True
Range("A9:G9").Font.Color = RGB(178, 178, 178)

Else
Rows("10:51").EntireRow.Hidden = False
Rows("9:51").EntireRow.Font.Color = vbBlack

End If

Hierbij is cel H9 het keuzeveld Ja/Nee, geeft rij 9 de hoofdgroep en geven rijen 10 t/m 51 de subgroepen onder de hoofdgroep van rij 9. Dit herhaalt zich vervolgens meerdere keren.

Als er nu een rij ingevoegd wordt boven rij 9 (en dat moet in mijn geval kunnen), dan schuift het keuzeveld in H9 naar H10. Bovenstaande code werkt dan echter niet meer omdat de Range en de Rows harde input is in de code en niet mee schuift naar de volgende rij/cel.
Ik ben nu op zoek naar een mogelijkheid om bovenstaande code aan te passen zodanig dat invoegen en verwijderen van regels wel doorwerkt in bovenstaande code. Dus soort van dynamische code

Ik ben heel benieuwd of iemand mij hiermee kan helpen.

Dank alvast!
 

Bijlagen

  • Screenshot 2021-12-31 121400.png
    Screenshot 2021-12-31 121400.png
    9 KB · Weergaven: 26
Geef cel H9 een naam en gebruik dan: If Range("Naam").Value
 
Hey, hoe eenvoudig!
Ik moet nog ff puzzelen maar dit lijkt prima te werken.
Per blok voeg ik nu een naam toe en alles lijkt goed me te schuiven.
Dank voor deze oplossing!
 
Kan eenvoudiger:


Code:
Rows("10:51").Hidden = Range("H9") = "Nee"
Range("A9:G9").Font.Color = RGB(178, 178, 178)*(Range("H9") = "Nee")
 
Hartelijk dank snb voor deze vereenvoudigde notatie!
Met de tip van edmoor heb ik mijn project ook werkend gekregen: functionaliteit blijft gehandhaafd, ook bij het tussenvoegen/verwijderen van regels!

Nog een laatste vraagje: Werken xlsm bestanden niet in excel-online? Moeten gebruikers waarmee ik het bestand deel het bestand openen in de desktop versie van excel voor volledige functionaliteit?
 
VBA werkt niet in online Excel.
Gebruikers zullen dus inderdaad de desktop versie van Excel nodig hebben.
 
Als je een 'intelligente' tabel gebruikt hoef je niets te doen met benoemde gebieden.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan