Compile Error: Procedure Too Large help needed

Compile Error: Procedure Too Large help needed

我正在处理一个大型 Excel 项目,该项目需要输入分散在工作表中的大量数据,这些数据需要尽快输入。为了尝试帮助输入,我创建了一些用户表单,用户可以在其中输入数据。一种这样的形式 returns 在尝试传输数据时出现上述 "Process Too Large" 错误。

我明白为什么会弹出错误 - 它太长了。我已经包含了一个这样的条目的代码(当然略有修改)并且想知道我将如何截断它?

    Dim ws As Worksheet
    Dim i As Long
    Set ws = ThisWorkbook.Sheets("STOCK")

' 101
If entry101.Value <> "" Then
Dim NUM101 As String

If com101.Value <> "" Then
    NUM101 = "# - " & UCase(com101.Value)
Else
    NUM101 = ""
End If

    If cmb101.Value = "FULL" Then
        ws.Range("_101").Value = UCase(code101.Value) & " " & Chr(10) & UCase(com101.Value) & " - FULL " & Chr(10) & " "
    End If
    If cmb101.Value = "OUT OF STOCK" Then
        ws.Range("_101").Value = UCase(com101.Value) & " OUT OF STOCK " & Chr(10) & UCase(code101.Value) & " " & Chr(10) & " "
    End If
    If cmb101.Value = "SHIPPED" Then
        ws.Range("_101").Value = UCase(code101.Value) & " " & Chr(10) & " - SHIPPED " & Chr(10) & NUM101
    End If
    If cmb101.Value = "DAMAGED" Then
        ws.Range("_101").Value = UCase(code101.Value) & " DAMAGED " & Chr(10) & " "" & Chr(10) & NUM101"
    End If
    If cmb101.Value = "LOW STOCK" Then
        ws.Range("_101").Value = UCase(com101.Value) & " LOW-STOCK " & Chr(10) & UCase(code101.Value) & " " & Chr(10) & " "
    End If
    If cmb101.Value = "RETURN" Then
        ws.Range("_101").Value = UCase(code101.Value) & " " & Chr(10) & "RETURNED - " & UCase(com101.Value) & " " & Chr(10) & " "
    End If
    If cmb101.Value = "" Then
        ws.Range("_101").Value = UCase(code101.Value) & Chr(10) & " - UNKNOWN CONDITION"
    End If
End If

用户窗体有两个文本框 ("code101" & "com101") 和一个 ComboBox ("cmb101") 用于每个条目。上面的代码需要应用到从“_101”到“_143”的范围,所以需要重复43次。

如有任何帮助,我们将不胜感激。谢谢大家

像这样(未经测试):

Dim ws As Worksheet, vCom, vCode
Dim i As Long, s, num As String
Set ws = ThisWorkbook.Sheets("STOCK")

For i = 101 To 143
    If Me.Controls("entry" & i).Value <> "" Then

        vCom = UCase(Me.Controls("com" & i).Value)
        vCode = UCase(Me.Controls("code" & i).Value)

        num = IIf(vCom <> "", "# - " & vCom, "")
        s = ""

        Select Case Me.Controls("cmb" & i).Value
            Case "FULL": s = vCode & " " & Chr(10) & vCom & " - FULL " & Chr(10) & " "
            Case "OUT OF STOCK": s = vCom & " OUT OF STOCK " & Chr(10) & vCode & " " & Chr(10) & " "
            Case "SHIPPED": s = vCode & " " & Chr(10) & " - SHIPPED " & Chr(10) & num
            'etc
            'etc
        End Select
        If Len(s) > 0 Then ws.Range("_" & i).Value = s
    End If
Next i