/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Substrings i VBA
Fra : Thomas Christensen


Dato : 05-08-01 10:49

Hej,

Jeg har forsøgt at skrive en funktion der kan checke et filnavn for evt.
ulovlige tegn ( f.eks: <, >, ?, [,],|,*,/) og derefter erstatte dem med et
lovligt tegn f.eks. "_" (underscore).

--------------------
Public Function checkFilename(brevNavn As String)

Dim illegal(9) As String
Dim counter As Integer
Dim pos As Variant

illegal(1) = "<"
illegal(2) = ">"
illegal(3) = "?"
illegal(4) = "["
illegal(5) = "]"
illegal(6) = ":"
illegal(7) = "|"
illegal(8) = "*"
illegal(9) = "/"

counter = 0
pos = 0

For counter = 1 To 9
pos = InStr(1, brevNavn, illegal(counter), vbTextCompare)
If pos <> 0 Then
MsgBox pos & " " & illegal(counter) & " " & brevNavn
MsgBox Replace("brevNavn", illegal(counter), "_", [, [, [, ]]])
End If
Next counter

End Function
----------------------------

Formålet er at rette i filnavnet, før Excel arket bliver gemt for at undgå
fejlmeddelelser.
Problemet er at når jeg kører funktionen, som er en del af en større makro,
så er det som om linien

MsgBox Replace("brevNavn", illegal(counter), "_", [, [, [, ]]])

ignoreres fuldstændigt.

Er det fordi at Replace ikke kan bruges i VBA, men kun i VB ?
Hvad kan jeg gøre istedet for ?

Jeg håber at der er nogen der kan hjælpe.

Mvh
Thomas Christensen



 
 
Harald Staff (05-08-2001)
Kommentar
Fra : Harald Staff


Dato : 05-08-01 20:58

Hei Thomas

Du behøver ikke sjekke posisjonen for å gjøre replace. Bare be om replace,
så skjer det om det behøves og intet ellers.

En function skal returnere noget, her en string.

Men hovedfeilen er at "Brevnavn" står i klammer:
MsgBox Replace("brevNavn", illegal(counter), "_"

da sjekkes ikke variebelen, men teksten "brevnavn".

Her er en justert versjon:

Sub Test()
MsgBox checkedFilename("Hei?der>/Thomas[Christensen:/")
End Sub

Public Function checkedFilename(brevNavn As String) As String

Dim illegal(9) As String
Dim counter As Integer

checkedFilename = brevNavn
illegal(1) = "<"
illegal(2) = ">"
illegal(3) = "?"
illegal(4) = "["
illegal(5) = "]"
illegal(6) = ":"
illegal(7) = "|"
illegal(8) = "*"
illegal(9) = "/"

For counter = 1 To 9
checkedFilename = Replace(checkedFilename, illegal(counter), "_")
Next counter

End Function

.... og så skal du vurdere hvorvidt flere tegn er forbudt. Punktum ?
Mellomrom ?

HTH. Beste hilsen Harald


"Thomas Christensen" <tc@elvis.dk> wrote in message
news:9kj4mm$2kg3$1@news.cybercity.dk...
> Hej,
>
> Jeg har forsøgt at skrive en funktion der kan checke et filnavn for evt.
> ulovlige tegn ( f.eks: <, >, ?, [,],|,*,/) og derefter erstatte dem med
et
> lovligt tegn f.eks. "_" (underscore).
>
> --------------------
> Public Function checkFilename(brevNavn As String)
>
> Dim illegal(9) As String
> Dim counter As Integer
> Dim pos As Variant
>
> illegal(1) = "<"
> illegal(2) = ">"
> illegal(3) = "?"
> illegal(4) = "["
> illegal(5) = "]"
> illegal(6) = ":"
> illegal(7) = "|"
> illegal(8) = "*"
> illegal(9) = "/"
>
> counter = 0
> pos = 0
>
> For counter = 1 To 9
> pos = InStr(1, brevNavn, illegal(counter), vbTextCompare)
> If pos <> 0 Then
> MsgBox pos & " " & illegal(counter) & " " & brevNavn
> MsgBox Replace("brevNavn", illegal(counter), "_", [, [, [, ]]])
> End If
> Next counter
>
> End Function
> ----------------------------
>
> Formålet er at rette i filnavnet, før Excel arket bliver gemt for at undgå
> fejlmeddelelser.
> Problemet er at når jeg kører funktionen, som er en del af en større
makro,
> så er det som om linien
>
> MsgBox Replace("brevNavn", illegal(counter), "_", [, [, [, ]]])
>
> ignoreres fuldstændigt.
>
> Er det fordi at Replace ikke kan bruges i VBA, men kun i VB ?
> Hvad kan jeg gøre istedet for ?
>
> Jeg håber at der er nogen der kan hjælpe.
>
> Mvh
> Thomas Christensen
>
>



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408889
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste