首页 > 解决方案 > 公共函数中的 VBA 运行时错误 -2147319767 (80028029)

问题描述

今天在以下代码中弹出此错误:

Public lngLast_CS_Sheet As Long
Public lngCS1_Index As Long
Public lngCSLast_Index As Long
Public Function num_CSx_Sheets()        'Function to find total number of CS Sheets
    Dim w As Long, cs As Long
    For w = 1 To Sheets.Count
        cs = cs - CBool(UCase(Left(Sheets(w).Name, 2)) = "CS")
    Next w
    num_CSx_Sheets = cs
End Function

这个函数已经运行了好几年,但是当 w = 17 & cs = 4 时会产生错误

我已经检查了 CS 表的范围以查找用户错误命名,但找不到任何问题。

该函数由以下代码调用:

Sub BoMLookUpMaterials_2019_Rev_B()
'
' BoMSearch CS Sheets Macro - Modified 11/01/19 - PRS
'
Dim FirstSheet As Integer
Dim LastSheet As Integer
Dim LastRow As Integer
Dim FirstRow As Integer
Dim ItemQTY As Single
Dim sSheetName As String
Dim sItemName As String

With ActiveSheet
    LastRow = Cells(.Rows.Count, "Q").End(xlUp).Row                      'Find last row of BoM (Qty) Col Q
End With
'
sSheetName = ActiveSheet.Name                                            'Get sheet name of active Database sheet
'
lngLast_CS_Sheet = num_CSx_Sheets()                                     'Find total number of CS sheets
lngCS1_Index = Sheets("CS1").Index                                      'CS1 Sheet Index No.
lngCSLast_Index = Sheets("CS" & lngLast_CS_Sheet).Index                 'Last CS Sheet Index No.

Select Case sSheetName                                                  'Determines which BoM sheet initiated Update BOM procedure

我不是经验丰富的 VBA 程序员,无法弄清楚为什么现在会发生这种情况。有人可以指出我正确的方向吗?

标签: excelvba

解决方案


我不认为这是一个代码问题,因为通过使 lngLast_CS_Sheet 等于工作簿中 CS 工作表的数量来进一步测试,代码运行没有错误。此错误仅发生在此工作簿中,而具有完全相同代码模块的其他工作簿中未发生。因此,我断定这是工作簿中某处的用户引起的错误,我将对其进行托盘和追踪


推荐阅读