vba - 此数组已固定或暂时锁定

标签 vba vb6

我正在使用拆分函数并在变量中分配值并在几次迭代后循环运行代码,它给出“此数组已修复或暂时锁定(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

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

最佳答案

您的 line4 标签位于 temp 变量的 for 循环之外,因此当您 goto 时它会保持锁定状态。

你真的应该重组你的代码,不要在 for each 循环中使用 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 

(注意 **d 行。)

关于vba - 此数组已固定或暂时锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7709400/

相关文章:

vba - 在 VBA 中将数组解包为 ParamArray

excel - 在文本框 1 中找到 ID 以查找未将复选框选择应用于该行的行

vb6 - 转码过程中的window cmd

excel - 如何通过 Excel vba 自动调整 Access 表中的列

ms-access - Access 报告 "Can Grow"属性需要影响相邻控件

excel - 在 VBA 中使用文件选择器打开工作簿会引发编译错误

vb6 - 在VB6中获取文件的最后修改日期

c# - .Net DLL 引用另一个 DLL

arrays - Visual Basic 6 运行时错误 381 "Invalid Property Array Index"

c# - 标记为受限的函数或接口(interface),或者函数使用了 Visual Basic 不支持的自动化类型