Błąd Type Mismatch w VBA

0

W linii for j(...) jest błąd Mismatch. Dlaczego? Ma to być prosty program dzielący zdanie na poszczególne wyrazy w kolumnach obok. Dawno nie pisałem w VBA, a obsługa stringów jest dziwna, więc program...

 
Sub Makro2()
    For i = 1 To 3000 Step 1
        If Cells(i, 1).Value <> "" Then 'Jeśli w komorce jest hiperonim
            IleGrupLeksemow = Cells(i, 2).Value 'ilość grup leksemow
            
            For j = i To CInt(IleGrupLeksemow) Step 1
                DlugoscGrupyLeksemow = Len(Cells(j, 2).Value)
                GrupaLeksemow = Cells(j, 2).Value
                
                OstatniaSpacja = 1
                KtoryLeksem = 1 'Dzielenie na leksemy
                For k = 1 To DlugoscGrupyLeksemow Step 1
                    If Mid(GrupaLeksemow, k, 1) = " " Then
                        Leksem = Mid(GrupaLeksemow, OstatniaSpacja, k - OstatniaSpacja - 1)
                        Cells(i, 3 + KtoryLeksem).Value = Leksem 'w kolumnie 3+ktoryleksem
                        KtoryLeksem = KtoryLeksem + 1
                        OstatniaSpacja = k
                    End If
                Next k
            Next j
        End If
    Next i
End Sub
0

IleGrupLeksemow jest chyba typu int, więc po co konwersja?

0

Myślałem, że traktuje to jako String i dlatego wyskakiwał błąd, ale konwersja nic nie dała.

0

Wiem, że wykopuję temat jak nekrofil jakiś, ale zobaczyłam przypadkiem i się zdenerwowałam.

Type mismatch masz przede wszystkim dlatego, że NIE DEKLARUJESZ TYPÓW ZMIENNYCH. Twoje zmienne są więc inicjowane w typie Variant. A dalej co się z nimi dzieje, to już zgaduj zgadula - wszystko zależy od tego, co akurat tam przypiszesz.

Także jeśli zpragniesz kiedyś poprawić ten błąd, @grizz, zacznij od dodania na górze szablonu słówek dwóch magicznych:
Option Explicit

Następnie dodaj przed pętlą
Debug.Print CStr(IleGrupLeksemow)
Oczywiście można też użyć debuggera... ;)
Prawdopodobnie zobaczysz, że nie została sczytana liczba... tylko coś innego. Jakieś literki ci się zapałętały, i stąd type mismatch.

//...I tak, wiem, że błąd w efekcie wcale nie wynika z niedeklarowania typów... ale ile ja się takiego kodu napoprawiałam to nie uwierzycie -_-' Brak Option Explicit najchętniej karałabym banem na programowanie w VBA.

1 użytkowników online, w tym zalogowanych: 0, gości: 1