Teen ohjelmaa, missä F1:stä painamalla ohjelma kirjoittaa SendKeysillä tekstiboksin sisällön.
Nyt jos tekstiboksi sisältää tiettyjä merkkejä, esim ^ tai }, niin tulee "Invalid procedure call of argument"-virhe.
No aikaisemmin Merri antoi koodin, joka muuttaa niiden toimimattomien merkkien eteen { ja taakse } merkin jolloin ne toimivat.
Eli mitenköhän saisin sen koodin niin, ettei se lisää { ja } -merkkiä silloin, kun siinä tekstiboksissa on {enter} tai vastaava näppäinkoodi.
Eli esimerkiksi, jos tekstiboksissa on kirjoitettuna "Nobo on noob ^^ {enter}" eli tuon {enter}n kohdalla ei tule { ja } merkkejä siihen, mutta ^ merkeissä tulee.
Ja tässä se koodi:
Private Function Replace2(teksti As String) As String
Dim barTemp() As Byte, barOutput() As Byte
Dim intA As Integer, intB As Integer
' muutetaan testistring byte arrayksi
If LenB(teksti) = 0 Then Exit Function
barTemp = teksti
' varataan tarpeeksi tilaa lopputulokselle eli koska jokainen merkki
' voi pituudeltaan kolminkertaistua, eikä me tiedetä sisältöä
' etukäteen, varataan lopputulokselle kolminkertainen määrä tilaa
ReDim barOutput(UBound(barTemp) * 3 + 2)
' stringien sisältö on kaksi tavua per merkki: siksi step 2
For intA = 0 To UBound(barTemp) Step 2
' muutetaan yksi tavu string-merkiksi koodaamisen helpottamiseksi
' nopeampaa olisi vain käsitellä lukuina, mutta en jaksa luntata koodeja
' selkeämpää näin :)
Select Case ChrW$(barTemp(intA))
Case "[", "]", "%", "+", "(", ")", "^", "~", "{", "}"
' muuta sitten AscW luvuksi, minä en jaksa lunttia
barOutput(intB) = CByte(AscW("{"))
barOutput(intB + 2) = barTemp(intA)
barOutput(intB + 4) = CByte(AscW("}"))
' siirry kolme merkkiä eteenpäin lopputuloksessa
intB = intB + 6
Case Else
' kopioi haluttu tavu
barOutput(intB) = barTemp(intA)
' siirry merkki eteenpäin lopputuloksessa
intB = intB + 2
End Select
Next intA
' sitten siistitiään lopputuloksen koko (eli tiputetaan käyttämätön data pois)
ReDim Preserve barOutput(intB - 1)
' ja mallin vuoksi: ulosta
Replace2 = CStr(barOutput)
End FunctionAihe on jo aika vanha, joten et voi enää vastata siihen.