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