Vraag & Antwoord

Programmeren

Foutmelding VBA Excel

4 antwoorden
  • 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
  • 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.
  • 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
  • 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?

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.