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

waarden controleren en indien nodig aanpassen

Status
Niet open voor verdere reacties.

alexanderinfo

Gebruiker
Lid geworden
24 mrt 2008
Berichten
95
Beste mensen,

Ik heb een tabel waarin de gebruikers de locatie van een bepaalde map moeten vermelden.
Deze invoer moet aan bepaalde eisen voldoen.
De opmaak die ingevoerd moet worden is: "I:\map1\map2\map3\doelmap".
Helaas vullen de gebruikers het niet op deze manier in en vermelden ze enkel: "\map3\doelmap".

Ik gebruik nu de volgende codes om de ingevulde waarden te controleren en deze indien nodig aan te passen:

Code:
'verwijdert bepaalde tekst
ActiveSheet.Range("Tabel10[Locatiepad]").Replace what:="I:\map1\map2\", Replacement:="", LookAt:=xlPart _
        , SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

ActiveSheet.Range("Tabel10[Locatiepad]").Replace what:="map1\map2\", Replacement:="", LookAt:=xlPart _
        , SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

'voegt automatisch tekst toe aan invulling cel
For Each cl In ActiveSheet.Range("Tabel10[Locatiepad]").SpecialCells(xlCellTypeConstants)
    cl.Value = "I:\map1\map2\" & cl.Value
  Next

Helaas gebruiken ze soms teveel variabelen (dan weer met "\", dan weer zonder "\", etc.).

Is er een manier om de gebruiker te verplichten om het gehele locatieadres van de doelmap te vermelden in de cel?

PS. ik kan het betreffende document niet uploaden i.v.m. bedrijfsbeleid.
 
De controle gebeurt nu achteraf? Zet een macro in het Worksheet_Change event die controleert wat de gebruiker heeft ingevuld en het op dat moment eventueel aanpast.

De eerste 3 posities moeten kennelijk altijd I:\ zijn en de laatste positie een \
Een eenvoudige controle dus. Daarnaast zou je nog kunnen controleren of de opgegeven map wel bestaat.
 
Laatst bewerkt:
De controle gebeurt nu achteraf? Zet een macro in het Worksheet_Change event die controleert wat de gebruiker heeft ingevuld en het op dat moment eventueel aanpast.

De eerste 3 posities moeten kennelijk altijd I:\ zijn en de laatste positie een \
Een eenvoudige controle dus. Daarnaast zou je nog kunnen controleren of de opgegeven map wel bestaat.

Ik beheer dit blad straks niet meer zelf. De controle moet automatisch worden verricht.
Ik heb zelf nog een paar controle punten erin gezet en heb hiermee de meeste vormen ondervangen.

Het geheel werkt nu middels een knop, maar zodra ik het in een change event zet van bv het werkblad dan krijg ik een foutmelding.
 
Dan doe je het kennelijk niet goed. Daarnaast begrijp ik het nooit als mensen zeggen een foutmelding te krijgen en dan vervolgens niet vertellen welke melding dat dan is.
 
Dan doe je het kennelijk niet goed. Daarnaast begrijp ik het nooit als mensen zeggen een foutmelding te krijgen en dan vervolgens niet vertellen welke melding dat dan is.

Dat ik iets niet goed doe, was ik al uit.
Wat betreft de foutmelding niet vermelden, heb je gelijk.

Zodra ik de code in de Worksheet_Change zet, krijg ik onderstaande melding:

001.jpg
 
Die code kun je ook niet zomaar 1 op 1 in een event macro zetten. Daarnaast hoef je alleen maar de active cel te controleren die je op dat moment als Target voorhanden hebt.
 
Heb trouwens net On Error Resume Next gebruikt.
Helaas eindigt de code dan in een loop die het werkblad op slot zet.
 
Uiteraard! Er wordt veel gedacht dat de regel On Error Resume Next fouten oplost en dat is een complete misvatting. Het zorgt er alleen maar voor dat een fout niet wordt getoond, maar de fout is er wel degelijk en zal moeten worden afgehandeld.
 
Misschien wat inspiratie:

Maak een kleine Userform aan met twee textboxen.
Deze roep je aan als er een cel geselecteerd wordt, of als men er iets in zet.
Bij de eerste textbox vermeld je hoe de submap moet heten.
Bij de tweede de doelmap.
Komt in een van de twee een backslash voor, zorg je dat de textbox weer geledigd wordt, en men het niet kan versturen naar het werkblad.

Bij het versturen naar het werkblad zorg je in de code dat alles netjes wordt weggeschreven.

target.value = "I:\map1\map2\"& join(array(textbox1.value, textbox2.value),"\")
 
Misschien wat inspiratie:

Maak een kleine Userform aan met twee textboxen.
Deze roep je aan als er een cel geselecteerd wordt, of als men er iets in zet.
Bij de eerste textbox vermeld je hoe de submap moet heten.
Bij de tweede de doelmap.
Komt in een van de twee een backslash voor, zorg je dat de textbox weer geledigd wordt, en men het niet kan versturen naar het werkblad.

Bij het versturen naar het werkblad zorg je in de code dat alles netjes wordt weggeschreven.

target.value = "I:\map1\map2\"& join(array(textbox1.value, textbox2.value),"\")


Bedankt voor het idee. Echter het document is een autorisatiemodel en hierbij voeren ze soms bulk in en gebruiken de vulgreep.
Een userform gaat dan niet werken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan