грешка при изпълнение на 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