Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

Foutmelding VBA Excel

bertjedeb
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

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