Консультация № 139304
06.06.2008, 12:09
0.00 руб.
0 2 2
Здравствуйте, уважаемые эксперты!

У меня к вам вопрос по VBA.
Пусть на листе Excel-книги выделена область "B2:M10", объект Selection. Существует ли какой-нибудь метод(свойство) m1 (или, может быть, функция f1), которые выдают координаты этого объекта: Selection.m1="B2:M10" или f1(Selection)="B2:M10" ?

Обсуждение

Неизвестный
06.06.2008, 13:22
общий
это ответ
Здравствуйте, Солдатов С.В.!

В приложении тект рабочего макроса по преобразованию выделенных пользователем ячеек в числовой формат с двумя знаками после запятой и преобразованием введенного пользователем разделителя целой и дробной части в стандартный системный. Если такая операция невозможна, то ячейка закрашивается желтым цветом. Думаю, что описания работы достаточно в самом макросе.

Как видно, имеются стандартные свойства объекта - левый верхний угол выделенного диапазона и количество строк и столбцов в этом выделении.

С уважением.

Приложение:
Sub ss()‘определяем переменныеDim ro As LongDim co As LongDim dnac As DateDim dpos As DateDim rDim znachDim n As LongDim m As LongDim razd As String‘определяем системный разделитель целой и дробной частиrazd = Application.International(xlDecimalSeparator)‘определяем начальную позицию выделенного диапазонаro = Selection.Rowco = Selection.ColumnSet r = Selection‘работаем с диапазоном ячеек‘для каждой строки диапазонаFor n = 1 To r.Rows.Count‘для каждого стобца диапазона For m = 1 To r.Columns.Count‘заносим в переменную содержимое ячейки znach = Cells(ro + n - 1, co + m - 1)‘заменяем запятую на системный разделитель znach = Replace(znach, ",", razd)‘заменяем точку на системный разделитель znach = Replace(znach, ".", razd)‘здесь можно еще добавить замену других разделителей на системный‘проверяем на возможность преобразования в число If IsNumeric(znach) Then‘если можно преобразовать, то преобразуем в число с плавающей точкой двойной точности, убираем заливку ячейки и назначаем формат ячейки на вывод двух знаков после нуля Cells(ro + n - 1, co + m - 1).Interior.ColorIndex = xlNone Cells(ro + n - 1, co + m - 1).NumberFormat = "0.00" Cells(ro + n - 1, co + m - 1) = CDbl(znach) Else‘если нельзя преобразовать, то закрашиваем ячейку желтым цветом Cells(ro + n - 1, co + m - 1).Interior.ColorIndex = 6 Cells(ro + n - 1, co + m - 1).Interior.Pattern = xlSolid End If NextNextEnd Sub
Неизвестный
06.06.2008, 20:38
общий
это ответ
Здравствуйте, Солдатов С.В.!
Selection.Address - возвратит ссылку на выделенные ячейки вида "$A$1" (или "$B$2:$M$10")
Selection.Address(RowAbsolute:=False, ColumnAbsolute:=False) - то же самое, только без "$", т.е. что Вам и необходимо
Форма ответа