anoniem Geplaatst: 10 april 2006 Delen Geplaatst: 10 april 2006 Ik heb een worksheet in excel met dropdown menu's die gelinkt zijn aan cellen. Nu wil ik als ik in een dropdown menu iets selecteer de een ander dropdown menu zichtbaar wordt, nu heb ik daarvoor een code geschreven in VBA. Deze werkt opzich goed alleen als ik in het eerste dropdown menu iets verander en ik heb al iets tweede dropdown menu een fout melding. De foutmelding " Runtime error " - 2147417848(80010108)" Method ' Hidden' of object ' Range ' Failed. De code: Private Sub cmdPos2_Change() Dim V As String Dim P As String Dim a As Range Dim b As Range Dim c As Range Dim L As Integer L = cmdPos2.ListIndex Set a = Range("A35:A36") Set b = Range("A37:A38") Set c = Range("A39:A40") Range("X35").Clear Range("X37").Clear Range("X39").Clear Select Case L Case Is = 0 cmdpos3_1.ListIndex = 8 cmdpos3_2.ListIndex = 4 cmdpos3_3.ListIndex = 1 V = Sheets(2).Cells(7, 1) Cells(31, 25) = V P = Sheets(2).Cells(13, 1) Cells(34, 2) = P a.EntireRow.Hidden = False b.EntireRow.Hidden = True c.EntireRow.Hidden = True Case Is = 1 cmdpos3_1.ListIndex = 8 cmdpos3_2.ListIndex = 4 cmdpos3_3.ListIndex = 1 V = Sheets(2).Cells(8, 1) Cells(31, 25) = V P = Sheets(2).Cells(24, 1) Cells(34, 2) = P a.EntireRow.Hidden = True b.EntireRow.Hidden = False c.EntireRow.Hidden = True Case Is = 2 cmdpos3_1.ListIndex = 8 cmdpos3_2.ListIndex = 4 cmdpos3_3.ListIndex = 1 V = Sheets(2).Cells(9, 1) Cells(31, 25) = V P = Sheets(2).Cells(31, 1) Cells(34, 2) = P a.EntireRow.Hidden = True b.EntireRow.Hidden = True c.EntireRow.Hidden = False Case Is = 3 cmdpos3_1.ListIndex = 8 cmdpos3_2.ListIndex = 4 cmdpos3_3.ListIndex = 1 V = Sheets(2).Cells(10, 1) Cells(31, 25) = V Cells(34, 2) = "" a.EntireRow.Hidden = True b.EntireRow.Hidden = True c.EntireRow.Hidden = True End Select End Sub Private Sub cmdpos3_1_Change() Dim V As String Dim L As Integer L = cmdpos3_1.ListIndex Select Case L Case Is = 0 V = Sheets(2).Cells(14, 1) Cells(35, 23) = V Case Is = 1 V = Sheets(2).Cells(15, 1) Cells(35, 23) = V Case Is = 2 V = Sheets(2).Cells(16, 1) Cells(35, 23) = V Case Is = 3 V = Sheets(2).Cells(17, 1) Cells(35, 23) = V Case Is = 4 V = Sheets(2).Cells(18, 1) Cells(35, 23) = V Case Is = 5 V = Sheets(2).Cells(19, 1) Cells(35, 23) = V Case Is = 6 V = Sheets(2).Cells(20, 1) Cells(35, 23) = V Case Is = 7 V = Sheets(2).Cells(21, 1) Cells(35, 23) = V Case Is = 8 V = Sheets(2).Cells(22, 1) Cells(35, 23) = V End Select End Sub Alvast bedankt voor de moeite Quote Link naar reactie
anoniem Geplaatst: 10 april 2006 Auteur Delen Geplaatst: 10 april 2006 bertje, Ik kan de eerste zin wel lezen, maar er geen touw aan vastknopen :roll: . Wil je die eens herschrijven, zodat duidelijk wordt wat je bedoelt. Verder kun je code debuggen. Je plaatst dan voor een regel een rood-bruine punt (klik met muis voor de regel) en laat de code lopen. Die loopt tot de gepuntte regel, waarna je met F8/F7 etc regel-voor-regel verder kunt gaan. Zo zie je precies welke regel de foutmelding oplevert. Als je dat ook nog even meldt, gaan we verder. Maarten. Quote Link naar reactie
anoniem Geplaatst: 12 april 2006 Auteur Delen Geplaatst: 12 april 2006 Het is een selector. Je kiest iets op positie 2. (drie mogelijkheden) Positie 3 is afhankelijk van positie 2. Op het moment dat ik een keuze maak op 2 moet op 3 de mogelijkheden komen die alleen mogelijk zijn met de keuze die is gemaakt bij positie 2. Het programma werkt goed alleen als ik bv. op positie 2 mogelijkheid 1 heb gekozen en me vervolgens bedenk. Het had mogelijkheid 0 moeten zijn. Dan wordt het gewijzigd gaat ook goed behalve als ik dan al iets heb in gevuld bij positie 3 dan krijg ik een fout melding. Als we dan kijken naar het stukje code voor mogelijkheid 0. Case Is = 0 cmdpos3_1.ListIndex = 8 ‘ The reset value cmdpos3_2.ListIndex = 4 cmdpos3_3.ListIndex = 1 V = Sheets(2).Cells(7, 1) ‘ The value for the selection for position 2 Cells(31, 25) = V ‘ enters the value in the worksheet for position 2 P = Sheets(2).Cells(13, 1) ‘ Change the head of position 3 Cells(34, 2) = P a.EntireRow.Hidden = False ‘ p1 b.EntireRow.Hidden = True ‘ p2 c.EntireRow.Hidden = True ‘ p3 het loopt dan fout om de gewijzigd range (in dit geval b.) te verbergen. Alle cellen waar eventueel informatie in komt worden aan het begin van deze sub leeggemaakt. Hopelijk is het iets begrijpelijker geworden Quote Link naar reactie
anoniem Geplaatst: 13 april 2006 Auteur Delen Geplaatst: 13 april 2006 Goed, iets duidelijker :) . Nu de probleem-analyse: wat gaat er mis? Je geeft niet aan dat je hebt gedebugd door regel-voor-regel door de code te gaan, dus zou ik er even op kunnen wachten :evil: . Maar goed, laat ik het probleem isoleren: Ik heb geprobeerd: [code:1:7885108244]Option Explicit Private Sub cmdPos2_Change() Dim V As String Dim P As String Dim a As Range Dim b As Range Dim c As Range Dim L As Integer L = 0 Set a = Range("A5:A6") Set b = Range("A7:A8") Set c = Range("A9:A10") Range("B5").Clear Range("B7").Clear Range("B9").Clear Select Case L Case 0 V = Sheets(2).Cells(7, 1) Cells(31, 25) = V P = Sheets(2).Cells(13, 1) Cells(34, 2) = P a.EntireRow.Hidden = False b.EntireRow.Hidden = True c.EntireRow.Hidden = True End Select End Sub[/code:1:7885108244] en dat werkt goed, dus het probleem zit ergens anders. Wil je je eigen code eens debuggen en aangeven in welke regel het fout gaat? Quote Link naar reactie
anoniem Geplaatst: 13 april 2006 Auteur Delen Geplaatst: 13 april 2006 Oke heb ik gedaan tevens heb ik de code een beetje her schreven. er is een apart object voor het resetten gemaakt. De code daarvoor ziet er als volgent uit: [quote:6429007b3e][color=green:6429007b3e]Sub ResetP3() Dim a, b, c As Range Set a = Range("A35:A36") Set b = Range("A37:A38") Set c = Range("A39:A40") cmdpos3_1.ListIndex = 8 cmdpos3_2.ListIndex = 4 cmdpos3_3.ListIndex = 1 a.EntireRow.Hidden = True b.EntireRow.Hidden = True c.EntireRow.Hidden = True End Sub [/color:6429007b3e] [/quote:6429007b3e] Indien ik debug gaat het fout bij de code b.EntireRow.Hidden = True de foutmelding is Run-time Error '1004' Application-defined or object defined error. Nog een opmerkting het werkt allemaal goed zolang ik p3 niet in vul in mijn worksheet. indien ik dus op P2 een keuze heb gemaakt en vervolgens op P3 een keuze maak en vervolgens P2 wijzig krijg ik deze foutmelding. De foutmelding loopt mee met je keuze dus als ik optie 0 heb ingevuld ik wijzig P2 krijg ik de fout melding bij a.EntireRow.Hidden 1 = b en 2 = c Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen