Pracuję nad funkcją, która ma rozwiązać problem kilku wierszy w jednej komórce. Funkcja ma za zadanie podzielić każdy z tych wierszy i przekształcić go na kod w innym języku (Syntax SPSS). Każda komórka w odniesieniu do której ta funkcja ma pracować ma różną liczbę wierszy w środku, dlatego funkcja obejmuje również mechanizm zliczania znaku końca wiersza. Ten mechanizm jest zainspirowany znalezioną w necie funkcją i działa bez zarzutu.
Kluczowy element funkcji nad która pracuję obejmuje pętlę for, która z każdego wiersza wewnątrz komórki przekształca tekst i dopisuje go do zmiennej zwracanej ostatecznie jako wynik funkcji. Niestety z nieznanych mi powodów funkcja przestaje działać gdy wstawiam iterator jako argument do tablicy będący w tym przypadku numerem wiersza wewnątrz komórki. Jeżeli wstawiam tam na sztywno np. 0 to otrzymuje odpowiednią liczbę razy tę samą wartość (tyle razy ile wierszy), natomiast jeżeli wstawiam tam iterator to funkcja przestaje działać. Chodzi o linijkę kodu 'wers = wersy(y)' Będę wdzięczny za wszelkie sugestie. Próbowałem już z innymi pętlami ale nic to nie dało. Poniżej wklejam kod.
Function wart(tekst As String) As String
'liczę ile razy występuje znak końca wiersza
' i dodaję 1 żeby mieć liczbę wierszy
Dim pk_ZliczZnak As Integer
Dim Szukany_znak As String
Szukany_znak = Chr(10)
Dim a, l, i As Integer
a = 0
i = 1
l = Len(tekst)
For i = 1 To l
If Mid(tekst, i, 1) = Szukany_znak Then
a = a + 1
End If
Next i
pk_ZliczZnak = a + 1
'dzielę komórkę przez separator znaku końca wiersza
wersy = Split(tekst, Chr(10))
Dim lr As String
lr = ""
' pętla ma dla każdego wiersza przekształcić tekst w taki sposób aby liczba znajdująca się przed dwukropkiem
' została oddzielona od jej opisu, który ma się znaleźć w cudzysłowie.
' Tak przekształcony tekst ma być dopisany do zmiennej lr która potem jest zwracana w całości jako wynik funkcji
Dim y As Integer
For y = 0 To pk_ZliczZnak
wers = wersy(y)
wersr = Split(wers, ":")
kod = wersr(0)
etyk = Trim(wersr(1))
ly = kod & " " & Chr(34) & etyk & Chr(34)
lr = lr & ly
Next y
wart = lr
End Function