Excel макрос снять выделение

Снять выделение после вставки

Олег78

Дата: Суббота, 12.10.2013, 21:30 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 10


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Всем, добрый вечер. Помогите советом)
Какую команду нужно дописать в конце, чтобы макрос снимал выделение с рэнджа?
[vba]

Код

Range(«D2:P2»).Select
Selection.Copy
Range(«D2:P» & i & «»).Select
ActiveSheet.Paste

[/vba]
Заранее спасибо!

 

Ответить

Alex_ST

Дата: Суббота, 12.10.2013, 21:37 |
Сообщение № 2

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

[vba]

Код

Range(«D2:P2»).Copy Range(«D2:P» & i & «»)

[/vba]



С уважением,
Алексей
MS Excel 2003 — the best!!!

Сообщение отредактировал Alex_STСуббота, 12.10.2013, 21:40

 

Ответить

SkyPro

Дата: Суббота, 12.10.2013, 21:45 |
Сообщение № 3

Группа: Друзья

Ранг: Старожил

Сообщений: 1206


Репутация:

255

±

Замечаний:
0% ±


2010

Если имеете ввиду «пунктир» скопированного диапазона, то [vba]

Код

Application.CutCopyMode = False

[/vba]


skypro1111@gmail.com

 

Ответить

Матрёна

Дата: Суббота, 12.10.2013, 21:49 |
Сообщение № 4

Группа: Проверенные

Ранг: Обитатель

Сообщений: 398


Репутация:

40

±

Замечаний:
0% ±


Application.CutCopyMode = False

Оптимально: перед
End Sub

 

Ответить

Alex_ST

Дата: Суббота, 12.10.2013, 21:56 |
Сообщение № 5

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

Зачем вообще метод Select усли и без него всё в одну строчку копируется и вставляется?
Не учите человека исправлять ошибки. Учите их не делать.



С уважением,
Алексей
MS Excel 2003 — the best!!!

 

Ответить

AlexM

Дата: Суббота, 12.10.2013, 22:24 |
Сообщение № 6

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4257


Репутация:

1046

±

Замечаний:
0% ±


Excel 2003

можно еще так
[vba]

Код

Range(«D2:P2»).Copy Range(«D2»).Resize(i)

[/vba]



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.

 

Ответить

Матрёна

Дата: Суббота, 12.10.2013, 22:30 |
Сообщение № 7

Группа: Проверенные

Ранг: Обитатель

Сообщений: 398


Репутация:

40

±

Замечаний:
0% ±


Зачем вообще метод Select

А где написано, что метод Select — БОЛЬШОЙ ГРЕХ, за который непременно надо карать? :D

 

Ответить

AlexM

Дата: Суббота, 12.10.2013, 22:34 |
Сообщение № 8

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4257


Репутация:

1046

±

Замечаний:
0% ±


Excel 2003

Select — это не энергосберегающий грех.
Тьфу метод
;)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.

 

Ответить

Матрёна

Дата: Суббота, 12.10.2013, 22:53 |
Сообщение № 9

Группа: Проверенные

Ранг: Обитатель

Сообщений: 398


Репутация:

40

±

Замечаний:
0% ±



Долой макрорекордер! :D
Всем: сразу непременно погружаться в «азы» профессионального программирования на VBA! :)

 

Ответить

Pelena

Дата: Суббота, 12.10.2013, 23:23 |
Сообщение № 10

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Оффтоп прекращаем


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Олег78

Дата: Суббота, 12.10.2013, 23:45 |
Сообщение № 11

Группа: Пользователи

Ранг: Новичок

Сообщений: 10


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Всем, спасибо за ответы. Имел ввиду именно пунктиры.Буду учиться все делать в одну строчку:)

 

Ответить

Alex_ST

Дата: Вторник, 15.10.2013, 08:46 |
Сообщение № 12

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

А где написано, что метод Select — БОЛЬШОЙ ГРЕХ, за который непременно надо карать?

Метод Select — это не большой грех, а большой тормоз и лишние строки кода.
И карать (а точнее пинать) Вы будете потом сами себя, увидев, что программа тормозит и распухла до нечитабельности.



С уважением,
Алексей
MS Excel 2003 — the best!!!

 

Ответить

Матрёна

Дата: Вторник, 15.10.2013, 13:09 |
Сообщение № 13

Группа: Проверенные

Ранг: Обитатель

Сообщений: 398


Репутация:

40

±

Замечаний:
0% ±


программа тормозит и распухла до нечитабельности.

Да простят меня модераторы, если сочтут это за оффтоп…
Не знала, что на VBA (с EXCEL) где-то создают серьезное ПО… :D

 

Ответить

Serge_007

Дата: Вторник, 15.10.2013, 13:16 |
Сообщение № 14

Группа: Админы

Ранг: Местный житель

Сообщений: 15888


Репутация:

2623

±

Замечаний:
±


Excel 2016

[offtop]

на VBA (с EXCEL) где-то создают серьезное ПО

А если добавить сюда еще и Access, то получается практически полноценная замена 1С, бесплатно и с возможностью делать что хочешь самостоятельно, без ТП 1С. Куда уж серьёзнее?
[/offtop]
Тема закрыта


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

Как отменить выделение диапазона ячеек ?

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

Модератор: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

Да нет, претензий к редактору макросов у меня нет, наоборот код узнаешь при его работе.
А «заботливый» употребил в добром и благодарном смысле.

JulyMar

3 / 3 / 0

Регистрация: 01.08.2013

Сообщений: 37

1

Снять выделение цветом отдельных ячеек диапазона

24.09.2013, 09:30. Показов 28193. Ответов 2

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Здравствуйте!
Снова задаю неумный вопрос.
Подскажите как снять заливку отдельных ячеек диапазона. Я смогла уговорить Excel снимать выделение в случае, если
заливка всей строки. А если в строке залиты несколько ячеек?

Visual Basic
1
2
3
4
5
6
7
8
9
Sub СнятьВыделение()
With ThisWorkbook.ActiveSheet
    ПоследняяСтрокаБД = .Range("C" & .Rows.Count).End(xlUp).Row    ' поиск номера последней строки
    For i = 5 To ПоследняяСтрокаБД
        ActiveSheet.Rows(i).Select
        If ActiveCell.EntireRow.Interior.ColorIndex = 3 Then ActiveCell.EntireRow.Interior.Pattern = xlNone
    Next
End With
End Sub

И как объяснить Excel-ю, что снять заливку только в диапазоне таблицы, а не за ее границами?
Заранее очень благодарна!



0



Апострофф

Заблокирован

24.09.2013, 10:21

2

Цитата
Сообщение от JulyMar
Посмотреть сообщение

снять заливку только в диапазоне таблицы, а не за ее границами?

Снимаем выделение 3-й строки таблицы j22:k29

Visual Basic
1
2
3
With Range("j22:k29")
  .Rows(3).Interior.Pattern = xlNone
End With

или всей таблицы

Visual Basic
1
.cells.Interior.Pattern = xlNone



1



3 / 3 / 0

Регистрация: 01.08.2013

Сообщений: 37

24.09.2013, 13:20

 [ТС]

3

Спасибо огромное за ответ, но я уже разобралась сама!



0



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

Gary's user avatar

3

Select any cell and turn off CutCopy:

  Range("A1").Select
  Application.CutCopyMode = False

Andrea's user avatar

Andrea

1,5064 gold badges17 silver badges19 bronze badges

answered Nov 25, 2013 at 13:31

user276802's user avatar

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

CharlieRB's user avatar

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's user avatar

HopelessN00b

1,8843 gold badges21 silver badges29 bronze badges

answered Sep 4, 2014 at 13:06

user364941's user avatar

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

SeanC's user avatar

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

Jason Pevitt's user avatar

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's user avatar

Prasanna

4,0065 gold badges33 silver badges51 bronze badges

answered Apr 11, 2016 at 7:18

Tobias Carlén's user avatar

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

Joost's user avatar

JoostJoost

1501 gold badge2 silver badges8 bronze badges

Put it under the last row:     Application.SendKeys ("{ESC}")
It will release the selection.

Scott - Слава Україні's user avatar

answered Nov 5, 2020 at 10:32

Ati's user avatar

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.

Community's user avatar

answered Oct 11, 2016 at 16:29

miroxlav's user avatar

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

Arman266's user avatar

1

Понравилась статья? Поделить с друзьями:
  • Excel макрос снятие пароля с макроса
  • Excel макрос скрыть пустые строки в excel
  • Excel макрос скрыть кнопку
  • Excel макрос скрывает лист
  • Excel макрос скопировать только значения