Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Excel/VBA] Excel crasht bij celwaarde verandering

Pagina: 1
Acties:

  • PetersNL
  • Registratie: Juli 2005
  • Laatst online: 22-06 12:59
Ik weet niet helemaal zeker of ik dit hier moest plaatsen of bij Programming, maar here it goes.

Voor een simpele planningtool die ik in Excel aan het programmeren ben, loop ik tegen het volgende probleem aan:

Ik heb een range cellen in Excel een naam gegeven die ik kan aanspreken, genaamd BunkerVar.Range. Nu heb ik in VBA een stukje code toegevoegd die ervoor zorgt dat ik andere code kan laten draaien, zodra een cel in die range van waarde veranderd:

code:
1
2
3
4
5
6
7
8
9
10
Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim BunkerVar As Range

    Set BunkerVar = Range("BunkerVar.Range")

    If Not Application.Intersect(BunkerVar, Range(Target.Address)) _
        Is Nothing Then
        Call HURows
   End If


Een deel van de range heeft verwijst naar de tweede kolom in de volgende tabel:
Walls?Yes
Load Side Wall?Yes
Left Side Wall?Yes
Right Side Wall?Yes
Discharge Side Wall?Yes

Wanneer een waarde van bijv. Yes naar No verandert, zal het volgende stukje draaien:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub HURows()
    
    If Range("Walls.Value") = "No" Then
        Range("wall.loadside.value").EntireRow.Hidden = True
       Range("wall.leftside.value").EntireRow.Hidden = True
        Range("wall.rightside.value").EntireRow.Hidden = True
        Range("wall.dischargeside.value").EntireRow.Hidden = True
    Else
        Range("wall.loadside.value").EntireRow.Hidden = False
       Range("wall.leftside.value").EntireRow.Hidden = False
        Range("wall.rightside.value").EntireRow.Hidden = False
        Range("wall.dischargeside.value").EntireRow.Hidden = False
    End If

Dit zorgt ervoor dat wanneer ik Walls? op No zet, de andere rijen verdwijnen. Nu wil ik er echter ook voor zorgen dat de waardes veranderen naar No bij de andere cellen, maar helaas crasht Excel telkens wanneer ik bijv. de regel 5 toevoeg aan het stukje code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub HURows()
    
    If Range("Walls.Value") = "No" Then
        Range("wall.loadside.value").EntireRow.Hidden = True
        Range("wall.loadside.value") = "No"
       Range("wall.leftside.value").EntireRow.Hidden = True
        Range("wall.rightside.value").EntireRow.Hidden = True
        Range("wall.dischargeside.value").EntireRow.Hidden = True
    Else
        Range("wall.loadside.value").EntireRow.Hidden = False
       Range("wall.leftside.value").EntireRow.Hidden = False
        Range("wall.rightside.value").EntireRow.Hidden = False
        Range("wall.dischargeside.value").EntireRow.Hidden = False
    End If

Iemand enig idee wat ik hier fout doe? Alvast bedankt!

/Edit:
Waar een lunchpauze wel niet goed voor is. Nog even goed naar gekeken, en kwam tot de conclusie dat hij vastliep door een loop. Ik heb de code aangepast, zodat het veranderen van de waarde van Walls? een eigen subroutine start en nu werkt het zonder problemen :)

[ Voor 4% gewijzigd door PetersNL op 08-08-2016 13:36 ]