Microsoft Office Forums

Go Back   Microsoft Office Forums > >

Reply
 
Thread Tools Display Modes
  #1  
Old 02-12-2024, 02:05 AM
Italophile Italophile is offline 1. Apply to current row.   2. De-select row afterwards. Windows 11 1. Apply to current row.   2. De-select row afterwards. Office 2021
Expert
 
Join Date: Mar 2022
Posts: 542
Italophile is just really niceItalophile is just really niceItalophile is just really niceItalophile is just really nice
Default

In Word, whilst there is an open document there is always a selection, as the cursor must always be somewhere in the document.

If you select something in code and don't want that to be selected when your code has finished, you must move the selection somewhere else. A common way to do this is to record what was selected at the start and re-select it at the end. For example:
Code:
    Dim initSel As Range: Set initSel = Selection.Range
    'working code
    initSel.Select
However, a better approach is to avoid using Selection in your code and work with the objects directly. There are very few occasions where Selection has to be used. Mostly you would work with the Range object instead.

For the specific case in your question it is not necessary to select the entire row. To prevent errors, your code should first check that the selection is inside a table. Then you can access the row and its cells from the selection, as below.


Code:
Sub TblCellShadeOf_TEN_Percent()
    If Selection.Information(wdWithInTable) Then
        With Selection.Rows(1).Cells
            With .Shading
                .Texture = wdTextureNone
                .ForegroundPatternColor = wdColorAutomatic
                .BackgroundPatternColor = wdColorGray10
            End With
        End With
    End If
End Sub
Reply With Quote
  #2  
Old 02-12-2024, 05:37 AM
Aengus345 Aengus345 is offline 1. Apply to current row.   2. De-select row afterwards. Windows 10 1. Apply to current row.   2. De-select row afterwards. Office 97-2003
Novice
1. Apply to current row.   2. De-select row afterwards.
 
Join Date: Feb 2024
Posts: 6
Aengus345 is on a distinguished road
Question [RESOLVED] 1. Apply to current row. 2. De-select row afterwards.

Quote:
Originally Posted by Italophile View Post
In Word, whilst there is an open document there is always a selection, as the cursor must always be somewhere in the document.

If you select something in code and don't want that to be selected when your code has finished, you must move the selection somewhere else. A common way to do this is to record what was selected at the start and re-select it at the end. For example:
Code:
    Dim initSel As Range: Set initSel = Selection.Range
    'working code
    initSel.Select
However, a better approach is to avoid using Selection in your code and work with the objects directly. There are very few occasions where Selection has to be used. Mostly you would work with the Range object instead.

For the specific case in your question it is not necessary to select the entire row. To prevent errors, your code should first check that the selection is inside a table. Then you can access the row and its cells from the selection, as below.
Code:
Sub TblCellShadeOf_TEN_Percent()
    If Selection.Information(wdWithInTable) Then
        With Selection.Rows(1).Cells
            With .Shading
                .Texture = wdTextureNone
                .ForegroundPatternColor = wdColorAutomatic
                .BackgroundPatternColor = wdColorGray10
            End With
        End With
    End If
End Sub
Thank you! This code works like a charm!

And thank you for the lesson! We VBA-seemingly-forever-newbs get far recording our actions, but don't always know how to fix things so the code is nice and neat and efficient!

Thank you!
Reply With Quote
Reply



Similar Threads
Thread Thread Starter Forum Replies Last Post
Need to apply Heading1 to select rows bobk544 Word VBA 3 06-09-2018 05:24 AM
VBA Word Table - Select More than 1 Column at a time - Apply Formatting jc491 Word VBA 12 09-24-2015 06:03 AM
1. Apply to current row.   2. De-select row afterwards. How to select the first row of the current table Jennifer Murphy Word VBA 9 01-29-2012 06:50 PM
1. Apply to current row.   2. De-select row afterwards. How to call current PC date and/or current PC year KIM SOLIS Excel 2 11-04-2011 06:09 PM
1. Apply to current row.   2. De-select row afterwards. Auto insert current month's name and current year Styler001 Word 4 01-25-2010 06:40 PM

Other Forums: Access Forums

All times are GMT -7. The time now is 10:03 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