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 Function
Aihe on jo aika vanha, joten et voi enää vastata siihen.