Ошибка выполнения vba 424 требуется объект - индексация строки

Я посмотрел на другие ссылки, и ни одна из них, похоже, не помогла мне. Я пишу код для программы, которая будет считать все запятые во фразе. Я не новичок в программировании, но я новичок в VBA.

Sub examp()

Dim s As String

Dim i, my_c As Integer

i = 0

s = ",jkqk;j,oiheqfjnq;ef,jwhef;ur,jwefun;jwkbnf," '<-------arbitrary, however, when I tried to make it input from a textbox it gave me error 424 as well, so I just defined it as random chars with commas

While i < Len(s)

    For i = 0 To Len(s) - 1

    j = s.Chars(i)  <----------------------------------Error occurs here
        If j = "," Then
            my_c = my_c + 1
    End If
    Next i
Wend

Count.Text = "my_c"

End Sub 

person user3487972    schedule 02.04.2014    source источник


Ответы (2)


  1. изменить j = s.Chars(i) на j = Mid(s,i,1)
  2. в строке Dim i, my_c As Integer только my_c равно Integer, а i равно Variant. Вы должны объявить каждую переменную явно: Dim i As Integer, my_c As Integer
  3. не уверен, что именно у вас Count (может быть, текстовое поле), но используйте Count.Text = my_c без кавычек.
  4. также я не могу понять, почему вы используете две петли? While i < Len(s) странно.
  5. For i = 0 To Len(s) - 1 должно быть For i = 1 To Len(s)

Если вы хотите посчитать запятые, есть более эффективный способ:

Dim s As String
Dim my_c As Integer
s = ",jkqk;j,oiheqfjnq;ef,jwhef;ur,jwefun;jwkbnf,"
my_c = Len(s) - Len(Replace(s, ",", ""))
person Dmitry Pavliv    schedule 02.04.2014

Или вы можете попробовать это:

Sub test()

Dim s As String
Dim c
Dim my_c As Long

s = ",jkqk;j,oiheqfjnq;ef,jwhef;ur,jwefun;jwkbnf,"
c = Split(s, ",")
my_c = UBound(c)
Debug.Print my_c

End Sub
person L42    schedule 02.04.2014