• 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.

filteren en keuzelijst

Status
Niet open voor verdere reacties.

tonissteiner

Gebruiker
Lid geworden
17 sep 2008
Berichten
352
iemand die mij kan helpen?

ik heb een sheet met een aantal landen waarin ook hun valuta staat zoals bijvoorbeel de euro. nu zou ik graag een opsomming maken van alle valuta en dan met een voorkeuzelijst (gebruik makend van data validation) een selectie kunnen doen in een bepaalde cel. als ik dit op de eenvoudige manier doe komen er in deze lijst bijvoorbeeld 7 keer de euro voor. hoe kan ik een opsomming maken en dan pas deze lijst gebruiken?
 
die autofilter werkt inderdaad perfect maar heb nog niet gevonden hoe ik die kan gebruiken in een keuzelijst
 
bij deze dus een voorbeeld.
in kolom C heb ik dus een filter maar zou deze lijst (dus ook alfabetisch) willen gebruiken op een ander blad door gebruik te maken van een data validation en dan =list in te vullenBekijk bijlage Onkostennota.xlsx
 
dat filteren is niet echt het probleem
om mijn probleem beter te schetsen heb ik in het aangepaste bestand een validatielijst gemaakt in cel C45. deze kijkt naar de lijst van de cellen C5 tot C40
in de lijst komlt echter "EUR" meerdere malen voor. deze wordt in de validatielijst dus dan ook meerdere keren weergegegven.
wat ik nu zou willen is dat de validatielijst alles alfabetisch zet en ook wat meerdere keren voorkomt slechts eenmaal in de lijst zal worden weergegeven
Bekijk bijlage Onkostennota(3).xlsx
 
Zo zou het kunnen.
Code:
Sub hsv()
Dim cl As Variant, sq As Variant
   For Each cl In Sheets("Dagvergoeding").Range("C5:C40")
    cl.Name = cl
   Next cl

For Each cl In Application.Names
  sq = sq & "," & cl.Name
  cl.Delete
Next

With Range("C45").Validation
 .Delete
 .Add xlValidateList, , , sq
End With

End Sub
 
Hallo HSV,

dat werkt perfect.
wat als ik die validatielijst nu op een ander blad (bijvoorbeeld sheet2) en in een andere cel (bijvoorbeeld A1) wil hebben?
welke aanpassing in je code moet ik dan doen?
mij lukt het niet direct. maar heb dan ook niet zoveel kaas gegeten van VB

alvast bedankt
 
hallo

Harry, wat een gave oplossing :thumb:
en nu maar hopen dat er straks geen andere namen bijkomen:d

groet sylvester
 
Tonnis,
Code:
With Sheets("Blad2").Range("A1").Validation

Sylvester,
Dank je.
Ergens wist ik dat die vraag zou komen.
Eventueel een filter voor de 'Split' functie zetten in de code.
Ik weet een oplossing voor één gedefiniëerde naam te filteren, maar voor meerdere zou ik uit moeten vogelen.
 
goede morgen,

ik heb nog een klein probleem ontdekt in de oplossing van HSV. ik heb in de Excel waar ik deze oplossing wou gebruiken nog andere namen gedifinieerd maar door de code van HSV toe te passen worden alle namen gewist. heeft iemand daar een oplossing voor dat deze namen (van een celbereik dus) niet gewist worden?
 
Even een aanpassing maken.
Zet jouw gedefiniëerde namen in de code neer zoals hier 'NAAM1 en NAAM2'.
Als er meer namen zijn dan aanvullen met "|" (pipe) en de gedefiniëerde naam.

In het bestandje heb ik even twee namen gemaakt.
Code:
Sub hsv()
Dim cl, sq[COLOR="#FF0000"], Naamnietverwijderen[/COLOR]
  For Each cl In Sheets("Dagvergoeding").Range("C5:C40")
    cl.Name = cl
   Next cl

For Each cl In Application.Names
[COLOR="#FF0000"]Naamnietverwijderen = "NAAM1" & "|" & "NAAM2"
If InStr(1, Naamnietverwijderen, cl.Name) = 0 Then[/COLOR]
 sq = sq & "," & cl.Name
  cl.Delete
  End If
Next

With Sheets("Blad2").Range("A1").Validation
 .Delete
 .Add xlValidateList, , , sq
End With

End Sub
 

Bijlagen

harry,
waarom plak je niet een code achter jouw namen:
code="123!%^&"
lengte=7

cl.name=cl & code
...
sq = sq & "," & left(cl.Name.........-lengte.... of zo iets
...
 
Het zou een mogelijke oplossing kunnen zijn Sylvester.

-------
If right(cl.name,7) = "123!%^&" then
sq = sq & "," & left(cl.Name.........-lengte.... of zo iets
 
Helemaal geen slecht idee Sylvester.
Zo kun je namen toevoegen en verwijderen zonder de code aan te moeten passen.
In de bijlage heb ik het uitgewerkt.
Code:
Sub hsv()
Dim cl, sq, Naamnietverwijderen, code, lengte As Long
   For cl = 5 To 40
   code = "Tonis"
    With Sheets("Dagvergoeding")
     ActiveWorkbook.Names.Add .Cells(cl, 3) & code, .Cells(cl, 3)
    End With
   Next cl

For Each cl In Application.Names
If Right(cl.Name, 5) = "Tonis" Then
 sq = sq & "," & Left(cl.Name, Len(cl.Name) - Len(code))
  cl.Delete
  End If
Next

With Sheets("Blad2").Range("A1").Validation
 .Delete
 .Add xlValidateList, , , sq
End With

End Sub
 

Bijlagen

Even een aanpassing maken.
Zet jouw gedefiniëerde namen in de code neer zoals hier 'NAAM1 en NAAM2'.
Als er meer namen zijn dan aanvullen met "|" (pipe) en de gedefiniëerde naam.

In het bestandje heb ik even twee namen gemaakt.
Code:
Sub hsv()
Dim cl, sq[COLOR="#FF0000"], Naamnietverwijderen[/COLOR]
  For Each cl In Sheets("Dagvergoeding").Range("C5:C40")
    cl.Name = cl
   Next cl

For Each cl In Application.Names
[COLOR="#FF0000"]Naamnietverwijderen = "NAAM1" & "|" & "NAAM2"
If InStr(1, Naamnietverwijderen, cl.Name) = 0 Then[/COLOR]
 sq = sq & "," & cl.Name
  cl.Delete
  End If
Next

With Sheets("Blad2").Range("A1").Validation
 .Delete
 .Add xlValidateList, , , sq
End With

End Sub

Dag heren,

ik heb nog een probleem met deze oplossing. tot hoeveel namen kan ik hier zo inbrengen? ik heb er een 40-tal ingebracht maar blijkbaar heb ik nu een fout op de lijn cl.Delete

de tweede oplossing die jullie voorstelden werkte jammer genoeg ook niet. mijn bestand is net iets te groot om op dit forum te plaatsen ook.

hopelijk kunnen jullie me helpen
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan