Кто-нибудь может объяснить, почему этот код не работает правильно? Если я запускаю это, используя каждую ячейку отдельно, она работает нормально. Однако, когда я запускаю его в цикле, он работает для первого объекта, но затем он продолжает давать 0 в качестве результата.
Мой код ищет объекты в нашей системе управления файлами.
Поэтому, если я удалю функциональность цикла, добавьте значение ячейки вместо cel.Value
, используя ThisWorkbook.Sheets("Sheet").Range("B3").Value
или ThisWorkbook.Sheets("Sheet").Range("B4").Value
или ThisWorkbook.Sheets("Sheet").Range("B5").Value
, и запускайте код, нажимая кнопку каждый раз, когда он работает правильно (я получаю сообщение "На каждом клике было по 1 объекту). Когда я запускаю его как есть, я получаю: «Было 1 объект», затем «Было 0 объектов», «Было 0 объектов»
Вот мой код:
'set range
Dim myrng: Set myrng = ThisWorkbook.Sheets("Sheet").Range("B3:B5")
Dim cel
'loop through each cell in range
For Each cel In myrng
' ObjectType
oExp.DataStatusValueType = MFilesAPI.MFStatusTypeObjectTypeID
oTV.SetValue MFDatatypeLookup, 305
oSearchCondition.Set oExp, MFConditionTypeEqual, oTV
oSearchConditions.Add -1, oSearchCondition
' Class
Set oSearchCondition = CreateObject("MFilesAPI.SearchCondition")
oExp.DataPropertyValuePropertyDef = MFilesAPI.MFBuiltInPropertyDefClass
oTV.SetValue MFDatatypeLookup, 177
oSearchCondition.Set oExp, MFConditionTypeEqual, oTV
oSearchConditions.Add -1, oSearchCondition
' Object has the same name
Set oSearchCondition = CreateObject("MFilesAPI.SearchCondition")
oExp.DataPropertyValuePropertyDef = MFilesAPI.MFBuiltInPropertyDefNameOrTitle
oTV.SetValue MFDatatypetext, cel.Value ' Here it is
oSearchCondition.Set oExp, MFConditionTypeEqual, oTV
oSearchConditions.Add -1, oSearchCondition
' Object is not deleted
Set oSearchCondition = CreateObject("MFilesAPI.SearchCondition")
oExp.DataStatusValueType = MFilesAPI.MFStatusType.MFStatusTypeDeleted
oTV.SetValue MFDatatypeBoolean, False
oSearchCondition.Set oExp, MFConditionTypeEqual, oTV
oSearchConditions.Add -1, oSearchCondition
' Execute the search
Dim oObjectSearchResults As MFilesAPI.ObjectSearchResults
Set oObjectSearchResults = oVault.ObjectSearchOperations.SearchForObjectsByConditions(oSearchConditions, MFSearchFlagNone, False)
MsgBox ("There were " & oObjectSearchResults.Count & " objects")
Next