Добрый день! Имеется код макроса который в указанном листе округляет значения в каждой ячейке до 3х знаков после запятой при условии что в ячейке нет формулы и ячейка не является пустой. Диапазон для округления задан значениями S(строка)и С(столбец)в листе "ц-1" Подскажите как сделать чтоб этот диапазон определялся при выделении ячеек: т.е. выделяем мышкой диапазон (таблицу) и при нажатии хот-кея(либо вытащить кнопку на панель или ленту) запускался макрос и обрабатывал данный диапазон. И ещё можно ли как ни будь оптимизировать код. Что то мне кажется подход грубоват, в моём случае Макрос реально долго работает. табличка приложена в файле Пример
Код
Sub Округление()
Dim wb As Workbook
Dim c As Integer
Dim S As Integer
Dim a As Range
Set wb = ThisWorkbook
Set ws1 = wb.Worksheets("Ц-1")
For S = 49 To 79
For c = 2 To 61
If Cells(S, c).HasFormula Then
Cells(S, c).Value = Cells(S, c).Formula
Else
If Cells(S, c).Value = "" Then
Cells(S, c).Value = ""
Else
Cells(S, c).Value = Round(Cells(S, c), 3)
End If
End If
Next
Next
End Sub
Владислав Кузницын, 4 года прошло… Если вам нужно обычное математическое округления (как на листе), то используйте --Format$(c,"0.000") (для данного кода и 3ёх знаков после запятой
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Владислав Кузницын, если Вы будете обращаться с вопросами не к пользователю, а к форуму - шансы на скорейшее решение сильно повысятся. Если выложите пример - вот так есть, а так надо - шансы на скорейшее решение сильно повысятся. Форумчанам не придется гадать:
Цитата
Jack Famous написал: Если вам нужно обычное математическое..