Так, с этим уже разобрался. Выглядит примерно так:
Do While Not pFeatureLayer Is Nothing
'Only search the selectable layers
If pFeatureLayer.Selectable Then
ShapeFieldName = pFeatureLayer.FeatureClass.ShapeFieldName
Set pSpatialFilter.OutputSpatialReference(ShapeFieldName) = pMap.SpatialReference
pSpatialFilter.GeometryField = pFeatureLayer.FeatureClass.ShapeFieldName
Set pFeatureClass = pFeatureLayer.FeatureClass
Set pFeatureCursor = pFeatureClass.Search(pSpatialFilter, False) 'Do the search
Set pFeature = pFeatureCursor.NextFeature 'Get the first feature
If Not pFeature Is Nothing Then
'Ищем слой с нужным полем в таблице
If pFeature.Fields.FindFieldByAliasName("SubZoneCode") > -1 Then
Set FindFeature = pFeature 'Exit if feature is valid
Exit Do
End If
End If
End If
Set pFeatureLayer = pEnumLayer.Next
Loop
Находит нужный слой (или возвращает nothing), но дальше мне нужно прочитать значения полей для выбранного объекта, не нашел пока ничего лучше, чем
iKadastrZone = pFeature.Fields.FindFieldByAliasName("KadastrNum")
iSubZoneCode = pFeature.Fields.FindFieldByAliasName("SubZoneCode")
Set pRow = pFeature.Table.GetRow(pFeature.OID)
If Not pFeature Is Nothing Then MsgBox " [ " & pRow.Value(iKadastrNum) & " x " & pRow.Value(iSubZoneCode) & " ] на " & pFeature.Class.AliasName
KadastrNum - это строковое поле, содержащее примерное такие значения: "01:06:01", но в MsgBox'e появляется совершенно иное значение (для данного примера - "74"). Как это понять и побороть?