Снять выделение после вставки |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Как отменить выделение диапазона ячеек ?
Q: Как управиться с такой болячкой: ActiveSheet.Cells.Select
После прекращения работы макроса диапазон остается выделенным. Как это выделение убрать?
A: Попробуй вот как:
Selection.Cells(1).Select
Фокус ввода попадёт после этого на первую ячейку ранее выделенного диапазона.
[ Назад ]
[ Оглавление ]
[ Далее ]
Оставить комментарий
Комментарий:
можно использовать BB-коды Максимальная длина комментария — 4000 символов. |
|
|
Комментарии
1.
10 января 2020, 13:44:09
ActiveCell.Select
Фокус ввода попадёт после этого на первую ячейку ранее выделенного диапазона.
2.
Аноним
28 апреля 2006, 12:38:25
Worksheet.Range[‘A10:H11’].ClearOutLine
I would like the final appearance after my VBA has finished running to be empty of selection — to have no cell or range on any sheet colored (if it was range selected) or in a bold line box (anything that was selected). Pupose: to present the client with a neat final appearance.
I’ve searched and cannot find how to do this. There is an Unselect according to MS, but it doesn’t seem to do anything.
asked Sep 3, 2012 at 22:07
3
Select any cell and turn off CutCopy
:
Range("A1").Select
Application.CutCopyMode = False
Andrea
1,5064 gold badges17 silver badges19 bronze badges
answered Nov 25, 2013 at 13:31
user276802user276802
1091 silver badge3 bronze badges
2
Excel always has something selected. A work around is needed. Selecting a cell off screen will set focus there, so that won’t work in and of itself. This code places the cursor off screen and then scrolls the sheet back up to view A1
.
Sub NoSelect()
Range("BB100").Select
ActiveWindow.SmallScroll up:=100
ActiveWindow.SmallScroll ToLeft:=44
End Sub
If you are really wanting ‘nothing selected`, you can use VBA to protect the sheet at the end of your code execution, which will cause nothing to be selected. You can either add this to a macro or put it into your VBA directly.
Sub NoSelect()
With ActiveSheet
.EnableSelection = xlNoSelection
.Protect
End With
End Sub
As soon as the sheet is unprotected, the cursor will activate a cell.
answered Sep 5, 2012 at 18:38
CharlieRBCharlieRB
22.5k5 gold badges55 silver badges104 bronze badges
There is a tricky way to do it.
Create an object such as a button. Select this button, then hide it, and no cell will be selected.
ActiveSheet.Shapes("Button 1").Visible = True
ActiveSheet.Shapes("Button 1").Select
ActiveSheet.Shapes("Button 1").Visible = False
That’s it.
HopelessN00b
1,8843 gold badges21 silver badges29 bronze badges
answered Sep 4, 2014 at 13:06
The only answer is to cheat.
Hide column A
and row 1
Put cursor in A1
. There will be a tiny dot in the corner of B2
answered Sep 5, 2012 at 17:56
SeanCSeanC
3,6292 gold badges19 silver badges26 bronze badges
2
Depending on the size of your selection, to get rid of any artifacting (I don’t know if this is also an issue in 2013 Excel, but on Mac it was a constant pain for me) you can just loop through cell by cell and select each.
answered Feb 22, 2015 at 19:00
By turning off screen updating before selecting a cell, scroll to selected cells is temporarily disabled.
This code checks which cells are currently visible and selects the first cell below the visible range which is not in view.
Eg, when i try it: Visble range is A1:BC79, so this code selects A80 and scrolling down and to the right and running it again reveals the excel chooses the first cell NOT visible below the first visible column.
Dim r As Range Application.ScreenUpdating = False Set r = Application.ActiveWindow.VisibleRange r(r.Cells.Count + 1).Select Application.ScreenUpdating = True
Prasanna
4,0065 gold badges33 silver badges51 bronze badges
answered Apr 11, 2016 at 7:18
0
Very old question, but my answer for reference:
You can use
With ActiveSheet
.EnableSelection = xlNoSelection
.Protect
End With
answered Dec 20, 2018 at 12:44
JoostJoost
1501 gold badge2 silver badges8 bronze badges
Put it under the last row: Application.SendKeys ("{ESC}")
It will release the selection.
answered Nov 5, 2020 at 10:32
Use a trick: Add a shape, then select it and hide it.
Source code for this is in answer of different question on this site.
answered Oct 11, 2016 at 16:29
miroxlavmiroxlav
12.8k6 gold badges64 silver badges100 bronze badges
You can simply select another cell.
for eg:
Sheets("Sheetname").cells(1,1).select
This will select the a1 cell.
answered Aug 1, 2022 at 13:54
1
Модератор:Naeel Maqsudov
-
Avsha
- Сообщения:664
- Зарегистрирован:08 сен 2005, 13:47
- Откуда:KZ
Программно копирую диапазон …
Range(«B13:L13»).Copy
Range(«N13»).Select
ActiveSheet.Paste
После этого остается выделенным «пунктирной рамкой копирования» диапазон B13:L13
и просто выделенным диапазон, куда копировали.
Как снять эти выделения. При ручном способе достаточно нажать ESC.
Так как правильно сделать, программно посылать ESC или еще как-то?
-
pashulka
- Сообщения:831
- Зарегистрирован:24 ноя 2004, 03:46
- Контактная информация:
10 ноя 2005, 11:13
Избавиться о пунктирной линии можно, если использовать, например :
Хотя в Вашем случае достаточно просто использовать :
Код: Выделить всё
Range("B13:L13").Copy Destination:=Range("N13")
' Or
Range("B13:L13").Copy Range("N13")
P.S. Если параметры форматирования ячеек копировать не надо, то от применения метода .Copy можно отказаться.
-
Avsha
- Сообщения:664
- Зарегистрирован:08 сен 2005, 13:47
- Откуда:KZ
10 ноя 2005, 13:55
pashulka,
Ваши варианты копирования диапазонов я взял на вооружение,
Application.CutCopyMode = False — у меня работает только когда его устанавливаешь в конце всех операций,
почему-то при автоматической записи макроса, Excel ставит ее перед командой Copy, и функция не работает.
Sub Макрос1()
‘ Макрос1 Макрос
‘ Макрос записан 10.11.2005 (HomePC)Range(«B5:B12»).Select
Application.CutCopyMode = False
Selection.Copy
Range(«G5»).Select
ActiveSheet.Paste
End Sub
А можно ли упростить код для случая копирования только формата диапазона?
Мой исходный вариант:
Range(«B13:L23»).Copy
Range(«N13»).Select
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
-
pashulka
- Сообщения:831
- Зарегистрирован:24 ноя 2004, 03:46
-
Контактная информация:
10 ноя 2005, 14:28
Устанавливать значение свойства .CutCopyMode действительно необходимо после применения метода .Copy
Что касается копирования форматов ячеек, то могу предложить вот этот вариант :
Код: Выделить всё
Range("B13:L23").Copy
Range("N13").PasteSpecial Paste:=xlFormats
Application.CutCopyMode = False
' Or
With Application
.Range("B13:L23").Copy
.Range("N13").PasteSpecial Paste:=xlFormats
.CutCopyMode = False
End With
-
Avsha
- Сообщения:664
- Зарегистрирован:08 сен 2005, 13:47
- Откуда:KZ
11 ноя 2005, 03:34
Спасибо,
устраняется как я понял лишнее действие выделения диапазона,
и лишние операнды в функции PasteSpecial также можно опустить.
Вот какой заботливый редактор записи макросов
А снятие обычного выделения с конечного диапазона после завершения копирования я решил простым выделение одной из ячеек, например Range(«A1»).Select.
-
Игорь Акопян
- Сообщения:1419
- Зарегистрирован:13 окт 2004, 17:11
- Откуда:СПБ
- Контактная информация:
11 ноя 2005, 10:34
заботливый редактор записи макросов
Он просто повторяет то что делаешь ты — максимально точно Любой клик в ячейки — он отметит select’ом
А уж ты, как программер, лезешь в доки и хелпы и убираешь лишнее
-
Avsha
- Сообщения:664
- Зарегистрирован:08 сен 2005, 13:47
- Откуда:KZ
11 ноя 2005, 20:07
Да нет, претензий к редактору макросов у меня нет, наоборот код узнаешь при его работе.
А «заботливый» употребил в добром и благодарном смысле.
Edit:
Not to clear the data in the selection, rather to remove the selection itself. I suppose this would be equivalent to selecting a different range, such as A1..
asked Oct 13, 2009 at 10:18
NickNick
4032 gold badges8 silver badges17 bronze badges
1
erm, you can always use VBA to reference the worksheet and cell range?
Option Explicit
Sub RemoveValues()
Worksheets("ACME_Sales").Range("A1:B17").ClearContents
End Sub
This will clear off cells A1 to B17 in the worksheet ACME_Sales.
EDITED Edit answer to reflect edited question.
Sub SelectNewCell()
Worksheets("ACME_Sales").Select
Range("E2:E2").Select
End Sub
This will let VBA remove any selection on ACME_Sales and then just select the cell E2.
answered Oct 13, 2009 at 12:05
calibancaliban
19.9k5 gold badges50 silver badges62 bronze badges
2
For a listrange you can all so make it like this
Sub test()
ClearListRange sht, Range("PIVOTTABLEDATASOURCESSTART")
End Sub
Public Sub ClearListRange(sht as worksheet, Startrange As Range)
sht.Range(Range(Startrange, Startrange.End(xlToRight)), Range(Startrange, Startrange.End(xlDown))).ClearContents
End Sub
Romeo Ninov
4,2795 gold badges17 silver badges18 bronze badges
answered Aug 18, 2017 at 9:22