Следующий код успешно удаляет выбранный RSCC, но всегда предотвращает удаление первого RSCC.
Dim cc As ContentControl
If Selection.Information(wdInContentControl) Then
Set cc = Selection.ParentContentControl
If Not cc.Type = wdContentControlRepeatingSection Then
Do Until cc.Type = wdContentControlRepeatingSection
Set cc = cc.ParentContentControl
Loop
End If
Dim index As Long
For index = 1 To cc.RepeatingSectionItems.Count
If Selection.Range.InRange(cc.RepeatingSectionItems(index).Range) Then
If index > 1 Then
cc.RepeatingSectionItems(index).Delete
Else
MsgBox Prompt:="You cannot delete this.", Title:="Error"
End If
Exit For
End If
Next index
End If
Моя цель - иметь возможность удалить любой выбранный RSCC, но не в том случае, если остается какой-либо один RSCC.
Другими словами, если у меня есть три RSCC (1,2,3), вместо того, чтобы всегда защищать раздел 1, я хотел бы защитить раздел 2, если бы я удалил разделы 1 и 3 или защитил раздел 3, если разделы 1 и 2 были удалены.
If index > 1 Then
? Вы выполняете итерацию сFor index = 1 To cc.RepeatingSectionItems.Count
, поэтому на второй итерации индекс всегда будет ›1, еслиcc.RepeatingSectionItems.Count > 1
. - person Marcelo Scofano Diniz   schedule 18.12.2020If index > 1 Then
предотвращает удаление первого раздела.If index > 2 Then
предотвращает удаление первых двух разделов. Цель - сделать этот индекс динамичным. Независимо от того, какие разделы удаляются, пользователь никогда не сможет удалить какой-либо раздел, если остался только один. - person Mohamad Bachrouche   schedule 19.12.2020For index = 1...Next
предназначен для определения порядкового номера выбранного элемента повторяющегося раздела, поскольку в объектной модели нет способа сделать это. - person Timothy Rylatt   schedule 19.12.2020count
, чтобы, когда RSCC имеет только один оставшийся раздел, ошибка запускалась, чтобы предотвратить удаление этого единственного оставшегося раздела? - person Mohamad Bachrouche   schedule 21.12.2020index = 1
, верно? Но вы хотите предоставить способ сохранить, скажем,index = 2
удаление 1 и 3. Верно? - person Marcelo Scofano Diniz   schedule 21.12.2020whatever = selected.whatever
- person Marcelo Scofano Diniz   schedule 21.12.2020cc.RepeatingSectionItems.Count > 1
перед удалением иcc.RepeatingSectionItems.Count >= 1
после удаления. - person Timothy Rylatt   schedule 21.12.2020index
? - person Mohamad Bachrouche   schedule 21.12.2020index
, поскольку он требуется для циклического перебора коллекции RSI. - person Timothy Rylatt   schedule 21.12.2020If index > 1 Then
он сделаетIf index <> indexToPreserve
- person Marcelo Scofano Diniz   schedule 21.12.2020For index = 1 To cc.RepeatingSectionItems.Count
наFor index = 0 To cc.RepeatingSectionItems.Count > 1
, но это не сработало, или все не так просто? - person Mohamad Bachrouche   schedule 22.12.2020