我正在编写Excel宏,我在清除Scripting.Dictionary对象时遇到问题:
Dim test As Integer
test = CompListDict.Count
CompListDict.RemoveAll
Set CompListDict = Nothing
Set CompListDict = CreateObject("Scripting.Dictionary")
Dim test1 As Integer
test1 = CompListDict.Count
Run Code Online (Sandbox Code Playgroud)
在我这样做之前,我将项目添加到字典中,然后我尝试清除它,但test1将等于测试并等于我添加的nr个对象.
我究竟做错了什么 ?谢谢!
是)我有的
我有一个包含零件号的文件和每个零件的几个供应商.共有1500个零件,每个零件有20个可能的供应商.为简单起见,我们假设部件列在A列中,每个供应商在此之后占据一列.供应商下的值是手动输入的,但并不重要.
在另一个工作表中,我有一个从Access数据库导入的部件列表.导入零件清单,但不导入供应商信息.在这两种情况下,每个部分只出现一次.
我想做的事
我只想将第一张表中的供应商信息与导入列表中的部件相匹配.现在,我有一个功能,它通过供应商遍历列表中的每个部分,将供应商信息复制到一个数组中,在导入的部件列表中找到部件号(总是有一个唯一匹配)并将数组复制到它旁边(内有供应商信息).有用.不幸的是,每次使用它时,find函数都会显着减慢.我知道它是通过各种测试的罪魁祸首,我无法理解为什么它减慢速度(从每秒200次循环迭代开始,减慢到每秒1次并且Excel崩溃).我可能有某种泄漏?文件大小始终为7mb.这里是:
Function LigneNum(numAHNS As String) As Integer
Dim oRange As Range, aCell As Range
Dim SearchString As String
Set oRange = f_TableMatrice.Range("A1:A1500")
SearchString = numAHNS
Set aCell = oRange.Find(What:=SearchString, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not aCell Is Nothing Then
'We have found the number by now:
LigneNum = aCell.Row
Exit Function
Else
MsgBox "Un numéro AHNS n'a pas été trouvé: " & SearchString
Debug.Print SearchString & " not found!"
LigneNum = 0 …Run Code Online (Sandbox Code Playgroud) 如何使用这些列标题名称"TOOL CUTTER"和"HOLDER"复制列(仅限数据)并将它们(作为一个附加在一个列中,每个列具有相同的列标题名称)粘贴到另一个工作簿表中,其中VBA代码(表格模块)是.谢谢.
该行"If Sht <> "masterfile.xls" Then是问题发生的地方.我得到了另一个在线来源的帮助,这条线If ws.name <> me.name Then显然我本来想在这里写一个不同的名字,但我无法弄清楚是什么.
不需要这种解决方法,这正是我现在所拥有的.
我打开多个文件,这就是为什么我主要使用ActiveSheet方法而不是Sheet1 Sheet2.我的代码所在的文件名为"masterfile.xls"
任何帮助是极大的赞赏!!
在此处找到以前的代码大纲帮助:搜索特定列标题名称,复制列并粘贴以附加到另一个wookbooksheet
Sub LoopThroughDirectory()
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Dim MyFolder As String
Dim Sht As Worksheet
Dim i As Integer
Dim LastRow As Integer, erow As Integer
'Speed up process by not updating the screen
'Application.ScreenUpdating = False
MyFolder = "C:\Users\trembos\Documents\TDS\progress\"
Set Sht = ActiveSheet
'create an instance of the FileSystemObject
Set objFSO …Run Code Online (Sandbox Code Playgroud)