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

Backslash verboden

Status
Niet open voor verdere reacties.

DieBe

Gebruiker
Lid geworden
9 mei 2011
Berichten
69
Ik heb een invullijst in excel. De gegevens worden bij het opslaan weggeschreven naar een ander werkblad. Nu mogen er in de cel geen bijzonder tekens staan zoals backslash, slash, * en ! . Met welke code controleer ik dit?
 
Zoiets:
ActiveCell eventueel vervangen door uw cel
Code:
Sub dotchie()
   Dim CellName As String
    Dim CellCharacter As String
    CellName = ActiveCell.Value
    For X = 1 To Len(ActiveCell.Value)
        CellCharacter = Mid(ActiveCell, X, 1)
        If CellCharacter Like "[</*\?>:]" Then
            CellName = Replace(CellName, CellCharacter, "", 1)
        End If
    Next X
    MsgBox CellName
    ActiveCell.Value = CellName
End Sub
 
met uw reactie kom ik er niet uit. Misschien een andere oplossing.
Op dit moment wordt als ik de opslaan knop aanklik eerst gecontroleerd of bepaalde cellen "gevuld" zijn met de volgende code:

'controleer onderwerp

If Range("F27") = Empty Then MsgBox ("Onderwerp invullen"), Range("F27").Select: Exit Sub

( dit doe ik voor iedere cel die ik in onderstaande code nodig heb).

Dat werkt goed. De inhoud van de cel wordt gebruikt om een map mee aan te maken met de volgende code:


Dim stPath As String
With Sheets("melding")
stPath = "G:\VBA\voorbeelden"
stPath = stPath & .Range("J10").Text & " " & .Range("F10").Value & " - " & .Range("F27").Value & ""
With CreateObject("Scripting.FileSystemObject")
If Not .FolderExists(stPath) Then .CreateFolder stPath

End With

U snapt dat als in een cel bijvoorbeeld test\2017 typ het dan fout gaat omdat door de backslash een ander pad wordt aangeduid. De controle op de inhoud wil ik dus uitbreiden met een controle op de gebruikte tekens.
 
Zet in dit stukje de tekens die je niet wilt heben: [</*\?>:]
 
Nog een keer geprobeerd en nu lukt het wel..... voor 1 cel.
Ik moet de controle uitvoeren op cel F10 en F27. Hoe pas ik de code aan zodat deze voor beide cellen werkt?
 
Code:
Sub dotchie2()
Dim rng As Range
Set rng = Range("F10,F27")
   Dim CellName As String
    Dim CellCharacter As String
    CellName = rng.Value
    For X = 1 To Len(rng.Value)
        CellCharacter = Mid(rng, X, 1)
        If CellCharacter Like "[</*\?>:]" Then
            CellName = Replace(CellName, CellCharacter, "", 1)
        End If
    Next X
    MsgBox CellName
    rng.Value = CellName
End Sub
 
Je kunt het zelf wel aanvullen lijkt me.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   if instr("$F$10$F$27",target.address) then
      application.enableevents=false
      target=replace(replace(replace(target,"[",""),"<",""),"/","")
      aplication.enableevents=true
  end if
End Sub
 
Ik heb al een andere oplossing. Gewoon een controle op de cel met gegevensvalidatie.

=(ISFOUT(VIND.ALLES("/";F27))+ISFOUT(VIND.ALLES("";F27))=2)

Bedankt in ieder geval voor het meedenken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan