• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Selectie Listbox opheffen

Status
Niet open voor verdere reacties.

RoCompy87

Gebruiker
Lid geworden
13 nov 2006
Berichten
284
Hallo iedereen,

Mijn Excelbestand vordert gestaag, maar ik heb toch weer een vraag (rijmt :p)

Ik heb de volgende code bij een listbox (die dient als soort inhoudsopgave):

Code:
Private Sub ListBox1_Click()
Dim SheetNr As Integer
SheetNr = Range("A14").Value
If Sheets(SheetNr).Range("E13") <> Sheets(1).Range("C10").Value Then
Response1 = MsgBox("Kan niet naar opgegeven werkblad gaan.", vbOKOnly + vbCritical, "Fout bij opvragen werkblad")
    If Response1 = vbOK Then
    Range("C10").Select
    Exit Sub
    End If
Else:
Sheets(SheetNr).Activate
End If
End Sub

Als de waarde in C10 van de indexpagina (hier staat ook de listbox) niet overeenkomt met de waarde in C13 van het opgevraagde werkblad, moet je op de indexpagina blijven. De macro houdt echter de aangeklikte waarde 'vast', nadat ik 3 (!) keer de msgbox heb gekregen. Als ik de waarde in cel C10 verander in de waarde die gelijk is aan C13, wordt er alsnog naar het opgevraagde werkblad genavigeerd. Weet iemand zo zonder voorbeeldbestandje waar dat aan kan liggen? O ja, cel A14 is de linked cell...
 
Ik heb uw vraag niet gevolgd maar heb toch een beetje code voor u.
Is de textbox noodzakelijk? Ik heb er geen gebruikt.

Nu wordt er naar het Blad(A14) gesprongen na invullen van cel A14.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim SheetNr As Integer
' enkel geldig voor cel A14 op Blad 1
If Not Intersect(Target, Sheets(1).Range("A14")) Is Nothing Then
' A14 mag niet leeg zijn
If Sheets(1).Range("A14").Value = "" Then
GoTo Afsluiten
End If
' Invoer 1 is ongeldig
If Sheets(1).Range("A14").Value = 1 Then
    MsgBox ("U bevindt zich reeds op Blad1.")
    Sheets(1).Range("A14").Value = ""
    GoTo Afsluiten
End If
'A14 mag niet groter zijn dan het aantal bladen in het werkboek
If Sheets(1).Range("A14").Value > Sheets.Count Then
MsgBox ("Er zijn niet zoveel bladen in uw werkboek.")
    Sheets(1).Range("A14").Value = ""
    GoTo Afsluiten
End If
' Invoer van cel A14 checken
If Sheets(Sheets(1).Range("A14").Value).Range("E13") <> Sheets(1).Range("C10").Value Then
    MsgBox ("Kan niet naar opgegeven werkblad gaan.")
    Sheets(1).Range("A14").Value = ""
    GoTo Afsluiten
End If
' Naar opgegeven blad gaan
Sheets(Sheets(1).Range("A14").Value).Activate
End If
' Eindigen
Afsluiten:
'Sheets(1).Range("A14").Value = ""
End Sub

Als het dat niet is, is het misschien goed voor iemand anders, hé

Cobbe
 
Laatst bewerkt:
Bedankt voor je reactie!

Het gebruik van een tekstbox is eigenlijk wel zeer gewenst ja... Een gebruiker moet op de naam van een persoon kunnen klikken, waarna naar het juiste werkblad wordt genavigeerd. Dit navigeren mag echter alleen als de waarde in cel C10 overeenkomt met de waarde van cel C13 uit het werkblad waarnaar wordt genavigeerd.
Mijn code werkt goed, maar op de een of andere manier wordt bij een foutmelding (C10 komt niet overeen met x!C13) 'onthouden' dat optie x is aangeklikt en dat is eigenlijk niet de bedoeling.
 
Is het niet beter om een Combobox te gebruiken?
Linked cell =A14 en ListfillRange = bv L1:L5 met de bladnummers.

Code:
Private Sub ComboBox1_Change()
SheetNr = Int(Range("A14").Value)
If Sheets(SheetNr).Range("E13") <> Sheets(1).Range("C10").Value Then
Response1 = MsgBox("Kan niet naar opgegeven werkblad gaan.", vbOKOnly + vbCritical, "Fout bij opvragen werkblad")
    If Response1 = vbOK Then
    Range("C10").Select
    Exit Sub
    End If
Else:
Sheets(SheetNr).Activate
End If
End Sub

Zo lijkt het te werken, 't is moeilijk zonder voorbeeld.

Cobbe
 
Laatst bewerkt:
Bedankt weer voor je reactie! :)

Uhm... jouw opzet helpt me eigenlijk nog niet echt van het probleem af. Ik heb mijn bestand even flink afgeslankt tot een voorbeeldbestandje...

De waarde die wordt aangeklikt in de listbox wordt weergegeven in cel A13 (linked cell).
In cel A14 wordt bij deze waarde het werkbladnummer gezocht.
Nummers in de listbox weergeven is geen optie, omdat de eindgebruiker dan geen idee heeft waar die naar navigeert.

Ik hoop dat mijn probleem met het voorbeeldbestandje duidelijker wordt...
 

Bijlagen

Ik heb de code zo aangepast dat bij een foutmelding, de waarde van de linked cell A13 blanco wordt, waardoor er ook geen werkbladnummer komt te staan in cel A14. Daarmee wordt de keuze in de listbox wel onthouden, maar verder lijkt de code goed te werken. Wat mij betreft opgelost :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan