【发布时间】:2020-06-17 14:39:05
【问题描述】:
我正在处理一个大型 Excel 项目,该项目需要输入大量分布在工作表上的数据,这些数据需要尽快输入。为了尝试帮助输入,我创建了许多用户表单,用户可以将数据输入到这些用户表单中。尝试传输数据时,其中一种表单会返回上述“进程太大”错误。
我明白为什么会弹出错误 - 它太长了。我已经包含了一个这样的条目的代码(当然稍微修改了)并且想知道我将如何截断它?
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”)和一个组合框(“cmb101”)。上面的代码需要应用到从“_101”到“_143”的范围内,所以需要重复43次。
任何帮助将不胜感激。谢谢大家。
【问题讨论】:
-
用户窗体上的控件可以通过名称来引用,例如
Me.Controls("entry101").Value这意味着您可以使用从 101 到 143 的循环并将循环计数器替换为您的控件名称,例如Me.Controls("entry" & i).Value您命名的方法相同范围。 -
你见过THIS吗?