Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA kysymys: miten poistaa väärät merkit muuttujasta

Kantis [11.02.2004 13:07:21]

#

Moi,
Tämä nyt ei ole ihan VB kysymys, koska tämä tuli vastaan
kun tein excelille makroa joka lukee kahden solun sisällön
ja yhdistää ne yhdeksi merkkijonoksi, jota käytetään tiedostonimenä työkirjalle.
Ohjelma lukee muuttujan ja se sisältää esim.
merkkijonon abcfd.hgds/2@, miten poistaa siitä
esim pisteen, kauttaviivan sekä @ merkin tai ylipäätään merkin joka ei sovi tiedostonimeen?

t:tomi

hunajavohveli [11.02.2004 14:27:40]

#

En tunne Exceliä, mutta toimivatko siinä samat lauserakenteet ja fuktiot kuin VB:ssä?
Sitten vain käyt läpi silmukalla ja Mid-funktiolla jokaisen merkin erikseen ja jos löytyy väärä merkki, pistät ohjelman sen.

Krisu [11.02.2004 15:05:10]

#

Periaatteena voisi pitää sitä, että kaikki merkit käydään läpi ja jos merkki ei ole . / tai @ lisätään merkki muuttujaan...

Ja tässä esimerkkikoodi:

merkkijono="abcdfd.hgds/2@"
a=0

do
doevents
a=a+1
b=mid(merkkijono,a,1)
if b <> "." and b <> "@" and b <> "/" then c=c&b
loop until b=""
tiedostonimi=c


Tämän pitäisi toimia... En tosin ole varma joten joitakin muutoksia saatat joutua tekemään :)

hunajavohveli [11.02.2004 15:19:54]

#

Juuri tuollaista tarkoitin. Tuo koodihan tarkistaa merkkijonon ja kopioi sen muuttujaan c karsien pois väärät.

setä [11.02.2004 22:47:59]

#

Tuo vertailu kannattaa tehdä näin, vaikka toimii noinkin

If InStr(b, "./@") = 0 Then c = c & b

Kantis [12.02.2004 13:27:53]

#

Ja noviisi palaa areenalle...
Ei mulla nää hommat mene ihan niin kuin elokuvissa
eli menikö tämä(kin) täysin metsään.
Saisiko tähän vielä avun?
Koodi on tässä:

fName = Range("B6").Value & " " & Range("D4").Value
a = 0
Do
DoEvents
a = a + 1
b = Mid(fName, a, 1)
If InStr(b, ",./\*?@:;<>|#") = 0 Then c = c & b
Loop Until b = ""
fName = c
wb5.SaveAs FileName:=c, FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False

BTW, tuli pieni ongelma lainausmerkkien poistamisen kanssa.
Mutta Kiitokset kaikille auttaneille!
t:tomi

setä [12.02.2004 13:52:10]

#

If InStr(b, ",./\*?@:;<>|#" & """) = 0 Then c = c & b

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta