Страницы: 1
RSS
Увеличить значения выделенного диапазона на 1
 
Добрый день! Не могу додуматься и собрать из того что есть на форумах макрос, который выполнял бы следующее:

Выделяем необходимый нам диапазон с значениями - нажимаем гор. клавишу макроса - получаем значения для выделенного диапазона увеличенных на 1.  
 
Добавьте макрос в свой файл, сохраните файл с расширением XLSM, задайте этому макросу свои горячие клавиши в Параметрах макроса (Alt+F8)
Код
Sub Add_1()
Dim iCell As Range

    If Selection.Cells.Count = 1 Then Exit Sub
    Application.ScreenUpdating = False
    For Each iCell In Selection
        If IsNumeric(iCell) Then iCell = iCell + 1
    Next iCell
    Application.ScreenUpdating = True
End Sub
Изменено: New - 19.10.2021 16:31:42
 
Neo1379, здравствуйте
Код
Sub t()
Dim cl As Range

For Each cl In Selection
   cl.Value2=cl.Value2 + 1
Next cl
End Sub


Цитата
New: If Selection.Cells.Count = 1 Then Exit Sub
почему выходим?
Изменено: Jack Famous - 19.10.2021 16:32:51
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Neo1379, (я не так понял... то то ещё подумал - а зачем? ;) ).
Код
Sub Выделено()
MsgBox "Ячеек: " & Selection.Count & Chr(10) _
& "Строк: " & Selection.Rows.Count & Chr(10) _
& "Столбцов: " & Selection.Columns.Count & Chr(10) _
& " + 1 ко всем значениям" & Chr(10) _
& "Ячеек: " & Selection.Count + 1 & Chr(10) _
& "Строк: " & Selection.Rows.Count + 1 & Chr(10) _
& "Столбцов: " & Selection.Columns.Count + 1
End Sub
Изменено: tutochkin - 19.10.2021 16:39:07
 
в любую ячейку пишете 1
копируете эту ячейку
отмечаете диапазон, который нужно увеличить на 1
правая кнопка мыши
специальная вставка, только значения, операция - сложить, ок
готово (это все без макросов)
Изменено: Ігор Гончаренко - 19.10.2021 16:43:16
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Jack Famous, это значит человек случайно запустил макрос ) когда не выделил диапазон на листе
Изменено: New - 19.10.2021 16:49:06
 
Добрый день. Можно еще через спец.вставку, без перебора значений в выделении, типа такого (выделить диапазон, запустить макрос):
Код
Sub AddByPasteSpecial()
    Application.ScreenUpdating = False
    With Cells(Selection.Cells(1).Row, Selection.Cells(1).Column + Selection.Columns.Count).Offset(0, 3)
        .Formula = "1"
        .Copy
    End With
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
        False, Transpose:=False
    Cells(Selection.Cells(1).Row, Selection.Cells(1).Column + Selection.Columns.Count).Offset(0, 3).Clear
    Application.CutCopyMode = False
    Selection.Cells(1).Select
    Application.ScreenUpdating = True
End Sub
Изменено: Пытливый - 19.10.2021 16:44:40
Кому решение нужно - тот пример и рисует.
 
Всем большое спасибо за ответы, то что нужно! :)
 
New, не факт - вдруг одно и нужно преобразовать?)

Цитата
tutochkin: Chr(10)
не понял, зачем ваш код, но можно использовать встроенную VBA-константу vbLf и не вызывать функцию (хотя она очень быстрая) ;)
Изменено: Jack Famous - 19.10.2021 16:53:49
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, видишь, что ТС написал в первом сообщении
Цитата
Neo1379 написал:
Выделяем необходимый нам диапазон с значениями
вот я от этого и отталкивался ) Если бы ТС написал "выделяем ячейку", то я бы не писал этого условия)
Изменено: New - 19.10.2021 16:56:56
 
Jack Famous,так повелось, что пользуюсь Chr(10)... Впрочем беглый поиск даёт интересные результаты https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=82953


Цитата
не понял, зачем ваш код
Я в первый раз прочитал вопрос топикстартера как "увеличить значение количества выделенных ячеек на единицу. Впрочем после вставки моего кода (гы) прочитал ваши посты и понял что был не прав.
 
Цитата
New: Если бы ТС написал "выделяем ячейку", то я бы не писал этого условия)
ну так-то ячейка это тоже частный случай диапазона  :D
В любом случае, лишним не будет, а захочет - уберёт  ;)

Цитата
tutochkin: интересные результаты
и чем же?  :D
Для MsgBox ВООБЩЕ ПОФИГ, какой из 4ёх переносов вы будет использовать, т.к. это ВИЗУАЛ
В остальном, отличие только в том, что некоторые это "чистый" перенос (один символ), а в некоторых перенос с кареткой (2 символа) — как в константе vbCrLf)
Изменено: Jack Famous - 19.10.2021 17:10:12
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, да, да, я в курсе
https://www.vedu.ru/programming/?articles_id=144&cont=articles
 
Вопрос к ТС . В ячейках всегда константы или могут быть формулы?
Изменено: БМВ - 19.10.2021 19:38:14
По вопросам из тем форума, личку не читаю.
 
БМВ,
Цитата
Neo1379: то что нужно!
вроде подошло, но, если написал, то выкладывай — чё прятать  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
но, если написал,
Даже не начинал, но подумал :-)
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх