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:
Een deel van de range heeft verwijst naar de tweede kolom in de volgende tabel:
Wanneer een waarde van bijv. Yes naar No verandert, zal het volgende stukje draaien:
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:
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 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 ]