Microsoft Office Forums

Go Back   Microsoft Office Forums > >

Reply
 
Thread Tools Display Modes
  #1  
Old 11-25-2024, 06:11 PM
Guessed's Avatar
Guessed Guessed is offline Delete a Line in a TOC Windows 10 Delete a Line in a TOC Office 2016
Expert
 
Join Date: Mar 2010
Location: Canberra/Melbourne Australia
Posts: 4,176
Guessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant future
Default

Paul, I think you are not understanding what the OP is trying to do. My interpretation of what they are saying could be addressed by this macro.

This refreshes the TOC and then steps backwards through the entries and removes any TOC1s that are followed immediately by another TOC1 (doesn't have a child)

Code:
Sub TOC_Fiddler()
  Dim aPar As Paragraph, aTOC As TableOfContents, i As Integer, aRng As Range
  Set aTOC = ActiveDocument.TablesOfContents(1)
  aTOC.Update
  Set aRng = aTOC.Range
  For i = aRng.Paragraphs.Count - 1 To 1 Step -1
    If aRng.Paragraphs(i).Style = "TOC 1" And aRng.Paragraphs(i).Next.Style = "TOC 1" Then aRng.Paragraphs(i).Range.Delete
  Next i
End Sub

__________________
Andrew Lockton
Chrysalis Design, Melbourne Australia
Reply With Quote
  #2  
Old 11-25-2024, 07:16 PM
KoolBreeze KoolBreeze is offline Delete a Line in a TOC Windows 11 Delete a Line in a TOC Office 2021
Novice
Delete a Line in a TOC
 
Join Date: Nov 2024
Posts: 8
KoolBreeze is on a distinguished road
Default

Quote:
Originally Posted by Guessed View Post
Paul, I think you are not understanding what the OP is trying to do. My interpretation of what they are saying could be addressed by this macro.

This refreshes the TOC and then steps backwards through the entries and removes any TOC1s that are followed immediately by another TOC1 (doesn't have a child)

Code:
Sub TOC_Fiddler()
  Dim aPar As Paragraph, aTOC As TableOfContents, i As Integer, aRng As Range
  Set aTOC = ActiveDocument.TablesOfContents(1)
  aTOC.Update
  Set aRng = aTOC.Range
  For i = aRng.Paragraphs.Count - 1 To 1 Step -1
    If aRng.Paragraphs(i).Style = "TOC 1" And aRng.Paragraphs(i).Next.Style = "TOC 1" Then aRng.Paragraphs(i).Range.Delete
  Next i
End Sub



Thank you! With a slight mod to work on each of the TOCs, that works exactly as I want except I get a "Cannot edit Range." error if it attempts to delete the top entry in the TOC.


I was getting that same error before using similar code that used paragraph.range.delete but I didn't realize it was the just on the top entry that caused the error until I ran your code which steps backwards through the TOC.
Reply With Quote
Reply



Similar Threads
Thread Thread Starter Forum Replies Last Post
Delete a Line in a TOC Horizontal line I can't delete goingvirtual Word 2 09-09-2018 02:58 AM
Delete a Line in a TOC Delete certain characters from a line Helend269 Word VBA 5 01-09-2018 12:08 PM
Delete a Line in a TOC Delete line above sidenote JackDaniels Word 2 10-01-2016 08:04 AM
If Statement in vba to Delete a Line mbesspiata Excel Programming 4 04-08-2014 04:32 AM
Cannot delete line adkr Office 1 04-07-2010 09:26 PM

Other Forums: Access Forums

All times are GMT -7. The time now is 12:35 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions Inc.
Search Engine Optimisation provided by DragonByte SEO (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
MSOfficeForums.com is not affiliated with Microsoft