【问题标题】:Using Null (or something else) to avoid 'Out of Memory'使用 Null(或其他)来避免“内存不足”
【发布时间】:2015-09-08 15:56:11
【问题描述】:

我有这个 sn-p 代码,它将根据不同的参数突出显示表格中不同颜色的选定数据行:

Public Sub HighlightRecentSampleRequests()

Dim sht As Worksheet
Dim LastRow As Long
Dim cell As Range
Dim dt, txt

Set sht = Worksheets("Sample Transfer Log")
LastRow = sht.Cells(Rows.Count, "A").End(xlUp).Row

For Each cell In sht.Range("K3:K" & LastRow).Cells
    dt = cell.Value
    txt = cell.Offset(0, -3).Value
If dt >= Date - 7 And txt = "Sample Receipt" Then
    cell.Range("A1:P1").Offset(0, -10).Interior.ColorIndex = 45 'orange
ElseIf dt >= Date Then
    cell.Range("A1:P1").Offset(0, -10).Interior.ColorIndex = 6 'yellow
Else
    cell.Range("A1:P1").Offset(0, -10).Interior.Color = RGB(220, 230, 242) 'default color
End If
Next

End Sub

我对我的原始代码进行了修改,以生成上述代码以使其达到我想要的效果。现在,当我运行系统时,我不断收到“内存不足”消息。这似乎是由于 If 语句的最后一部分,其中不符合先前条件的所有单元格都将突出显示为默认颜色。我尝试使用变量引用范围,然后在完成使用后将该变量设置为“无”,但返回了“无效使用 Null”的消息,此后这些变量无用,需要删除代码再次工作。

基本上,我想在不搞砸整个代码的情况下摆脱“内存不足”消息。

【问题讨论】:

  • 有什么理由不使用条件格式而不是 vba?
  • 不确定 range.interior.color 是否会采用十六进制,但您可以尝试。 dmcritchie.mvps.org/excel/colors.htm
  • 不设置任何颜色怎么样。您出于什么原因将其设置为默认值?不是已经默认了吗?
  • 您可以使用条件格式并根据条件将其放在整个范围内
  • @KarlGilbert 您对条件格式解决方案感兴趣吗?

标签: excel vba null out-of-memory


【解决方案1】:

在查看了实际文件之后,除了处理 Range 的代码之外,它会发生变化并被 UserForm 调用,这不是内存问题的直接原因。

因为有多个UserForms 在使用.Show 时被加载到内存中(对于特定的UserForm)。在处理UserForm 后,它们不会通过使用.Unload 从内存中释放,而是在后台保持活动状态并占用内存空间。

通过在处理了UserForm.Load.Show 之后正确使用.UnloadUserForm 在需要时可以正确释放内存。

【讨论】:

    【解决方案2】:

    您可以尝试使用 case 语句。像这样。

        Select Case dt
            Case Is >= Date - 7
                If txt = "Sample Receipt" then
                    cell.Range("A1:P1").Offset(0, -10).Interior.ColorIndex = 45 'orange
                End If
            Case Is >= Date
                cell.Range("A1:P1").Offset(0, -10).Interior.ColorIndex = 6 'yellow
            Case Else
                cell.Range("A1:P1").Offset(0, -10).Interior.Color = RGB(220, 230, 242) 'default color
        End Select
    

    【讨论】:

      猜你喜欢
      • 2015-03-20
      • 2019-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 2020-03-26
      • 1970-01-01
      相关资源
      最近更新 更多