此阵列已固定或暂时锁定

use*_*679 2 vb6 vba

我使用split函数并在变量中分配值并在几次迭代后在循环中运行代码,它给出错误"此数组是固定的或暂时锁定的(Visual Basic)"..

例如; 这里从excel读取的movies_cat1的值是以这种形式------"电影 - >列出所有电影,电影 - >世界电影 - >亚洲,电影 - >按语言划分的电影 - >僧伽罗语,电影 - >戏剧"

For crow = 1 To 100

    Value = Worksheets("Movies_categories").Range("A" & crow).Value
    cat_final = Worksheets("Movies_categories").Range("B" & crow).Value

    If Value = "y" Or Value = "Y" Then

      'Loop for reading the data from tabsheet- Movies

      For crowss = 5 To 3000
        movies_cat1 = Worksheets("Movies").Range("B" & crowss).Value
        movies_language = Worksheets("Movies").Range("C" & crowss).Value

        If movies_language = "English" Then

          Temp = Split(movies_cat, ",")  'run time Error:10  occurs here..

          For Each boken_c In Temp
            flag = 0
            boken_c = Trim(boken_c)

            If RTrim(LTrim(boken_c)) = LTrim(RTrim(cat_final)) Then
              flag = 1
              GoTo Line4:
            End If
          Next boken_c
        End If
      Next crowss
    End If
Line4:    Next crow
Run Code Online (Sandbox Code Playgroud)

此语句出错:Temp = Split(movies_cat, ",")它表示数组是固定的或暂时锁定的,因为我认为最初它将'temp'作为变量,但在返回split函数的值时,变量'Temp'在第一次完成后变为数组循环(即在乌鸦= 6,7 ......之后)

Dea*_*nna 5

你的line4标签在临时变量的for循环之外,所以当goto它让它锁定时.

你真的应该重构你的代码,不要在每个循环中使用goto.

也许:

For crow = 1 To 100 

  Value = Worksheets("Movies_categories").Range("A" & crow).Value 
  cat_final = Worksheets("Movies_categories").Range("B" & crow).Value 

  If Value = "y" Or Value = "Y" Then 

    'Loop for reading the data from tabsheet- Movies 

    For crowss = 5 To 3000 
      movies_cat1 = Worksheets("Movies").Range("B" & crowss).Value 
      movies_language = Worksheets("Movies").Range("C" & crowss).Value 

      If movies_language = "English" Then 

        Temp = Split(movies_cat, ",")  'run time Error:10  occurs here.. 

        For Each boken_c In Temp 
          flag = 0 
          boken_c = Trim(boken_c) 

          If RTrim(LTrim(boken_c)) = LTrim(RTrim(cat_final)) Then 
            flag = 1 
            **Exit For**
          End If
          **If flag = 1 Then Exit For**
        Next boken_c 
      End If 
      **If flag = 1 Then Exit For**
    Next crowss 
  End If 
Next crow 
Run Code Online (Sandbox Code Playgroud)

(注意**d行.)