我使用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 ......之后)
你的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行.)