Excel保持冻结运行宏

时间:2019-11-20 20:39:24

标签: excel vba

因此,我正在使用以下代码根据表列中的值做出一堆决定。我已将每个表列都包含在变量数组中进行决策的值中。然后使用for和while循环的组合在ans()变量数组中分配决策。

问题是,每次我运行宏时,Excel都会挂起。 我尝试了添加自动计算以及禁用事件和屏幕更新的常用方法。但这无济于事。我也尝试简化我的代码,但这是我可以实现的最大程度的简化。有人可以告诉我我还能做些什么吗?

Dim sh As Worksheet
Set sh = Sheets("LOGIC")
Dim t As ListObject
Set t = sh.ListObjects("Table8")
n = t.ListRows.Count

Dim rel() As Variant
rel = t.ListColumns(61).DataBodyRange.Value

Dim dc() As Variant
dc = t.ListColumns(62).DataBodyRange.Value

Dim t_req() As Variant
t_req = t.ListColumns(63).DataBodyRange.Value

Dim sc_req() As Variant
sc_req = t.ListColumns(64).DataBodyRange.Value

Dim x_req() As Variant
x_req = t.ListColumns(65).DataBodyRange.Value

Dim bo() As Variant
bo = t.ListColumns(69).DataBodyRange.Value

Dim ans() As Variant
ans = t.ListColumns(70).DataBodyRange.Value

Dim reqkind() As Variant
reqkind = t.ListColumns(2).DataBodyRange.Value

 For i = 2 To n Step 1
  If rel(i, 1) = 0 Or ans(i, 1) <> 0 Then
   GoTo Nexti
  ElseIf ans(i, 1) = 0 And rel(i, 1) = 1 Then
   While t_req(i, 1) > 0
    For j = i To n - 1
     If dc(i, 1) > 0 Then
      If reqkind(i, 1) = "" Then
       ans(i, 1) = "YES"
       t_req(i, 1) = t_req(i, 1) - 1
       sc_req(i, 1) = sc_req(i, 1) - 1
      ElseIf sc_req(i, 1) <= 0 Then
       ans(i, 1) = "YES"
       t_req(i, 1) = t_req(i, 1) - 1
       x_req(i, 1) = x_req(i, 1) - 1
      Else: GoTo Nextj
      End If
     ElseIf reqkind(i, 1) = "" Then
      If bo(i, 1) > 0 Then
       ans(i, 1) = "YES"
       t_req(i, 1) = t_req(i, 1) - 1
       bo(i, 1) = bo(i, 1) - 1
      Else
       ans(i, 1) = "NO"
       t_req(i, 1) = t_req(i, 1) - 1
      End If
     Else
      ans(i, 1) = "NO"
      t_req(i, 1) = t_req(i, 1) - 1
     End If
Nextj:
    Next j
    Wend
  End If
Nexti:
  Next i```

0 个答案:

没有答案