Hi all,
I will spare the details of why my map has several empty group layers unless anyone is interested, though it's not likely to be relevant at this point. We have a map of group layers with several more sets of nested group layers within (to keep similar datasets organized).
I'm trying to set something up to loop through the entire table of contents (say, 6 major group layers), check if a group layer is empty (i. e. contains no feature layers), if it is remove it, otherwise do nothing.
I'll post the code below, and the error I'm getting is "Value does not fall within the expected range" which I'm guessing means that the For loop is breaking (in: Public Sub recursiveSearch(ByVal pLayer As ILayer))
. My theory is that deleting the group layer takes the total count down by 1, thus having the for loop sitting at z = 2 when the pMap.LayerCount - 1 is only 1 now. But that's a working theory :P
In the main part of the code:
Basically, send each major group layer to the functions below. Any assistance is appreciated and please let me know if more info is required.
Thank you!
I will spare the details of why my map has several empty group layers unless anyone is interested, though it's not likely to be relevant at this point. We have a map of group layers with several more sets of nested group layers within (to keep similar datasets organized).
I'm trying to set something up to loop through the entire table of contents (say, 6 major group layers), check if a group layer is empty (i. e. contains no feature layers), if it is remove it, otherwise do nothing.
I'll post the code below, and the error I'm getting is "Value does not fall within the expected range" which I'm guessing means that the For loop is breaking (in: Public Sub recursiveSearch(ByVal pLayer As ILayer))
. My theory is that deleting the group layer takes the total count down by 1, thus having the for loop sitting at z = 2 when the pMap.LayerCount - 1 is only 1 now. But that's a working theory :P
In the main part of the code:
Code:
For z = 0 To pMap.LayerCount - 1
pLayerCheck = pMap.Layer(z)
Call recursiveSearch(pLayerCheck)
Next zThank you!
Code:
Public Sub deleteGroupLayer(ByVal pLayer As ILayer)
Dim pMxDoc As IMxDocument
Dim pMap As IMap
Dim pTempLayer As ICompositeLayer
pMxDoc = My.ArcMap.Document
pMap = pMxDoc.FocusMap
If TypeOf pLayer Is ICompositeLayer Then
pTempLayer = pLayer
If pTempLayer.Count = 0 Then
pMap.DeleteLayer(pLayer)
End If
End If
End Sub
Public Sub recursiveSearch(ByVal pLayer As ILayer)
Dim bContinue As Boolean
bContinue = True
Dim iLayerCount As Integer
If Not TypeOf pLayer Is ICompositeLayer Then
Exit Sub
Else
Dim pCompLayer As ICompositeLayer
Dim pSubLayer As ILayer
pCompLayer = pLayer
iLayerCount = pCompLayer.Count
For SubLayerIndex = 0 To iLayerCount - 1
pSubLayer = pCompLayer.Layer(SubLayerIndex)
recursiveSearch(pSubLayer)
Call deleteGroupLayer(pSubLayer)
Next SubLayerIndex
End If
End Sub