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