Добрый день! Прошу помощи знающих — создали табель для учета часов сотрудников. Что бы считать отдельно выходные и рабочие, ячейки выделили цветами и в Visual Basic вставили модуль для появления функции «Сумцвет» — функция работает. Но помимо столбцов с числами, после каждой даты есть столбец «Проект», где в ячейке текст. Функция берет диапазон ячеек по всей строке и видя текстовые ячейки выдает "#ЗНАЧ!". Как можно сделать так, что бы эти текстовые ячеейки либо не учитываль (что бы функция распозновала что цифры суммируются по цветам, а текст внезависимости от цвета ячейки пропускаются) либо же видя текст в ячейки считало их как «0»??
Файл прикрепил, спасибо!
Как выглядит сейчас модуль: Function СумЦвет(диапазон As Range, критерий As Range) As Double ' Определяет сумму значений в ячейках "диапазона", ' цвет которых совпадает с цветом в ячейке "критерий" Application.Volatile True Dim i As Range For Each i In диапазон If i.Interior.Color = критерий.Interior.Color Then СумЦвет = СумЦвет + i End If Next End Function
Добрый день! Прошу помощи знающих — создали табель для учета часов сотрудников. Что бы считать отдельно выходные и рабочие, ячейки выделили цветами и в Visual Basic вставили модуль для появления функции «Сумцвет» — функция работает. Но помимо столбцов с числами, после каждой даты есть столбец «Проект», где в ячейке текст. Функция берет диапазон ячеек по всей строке и видя текстовые ячейки выдает "#ЗНАЧ!". Как можно сделать так, что бы эти текстовые ячеейки либо не учитываль (что бы функция распозновала что цифры суммируются по цветам, а текст внезависимости от цвета ячейки пропускаются) либо же видя текст в ячейки считало их как «0»??
Файл прикрепил, спасибо!
Как выглядит сейчас модуль: Function СумЦвет(диапазон As Range, критерий As Range) As Double ' Определяет сумму значений в ячейках "диапазона", ' цвет которых совпадает с цветом в ячейке "критерий" Application.Volatile True Dim i As Range For Each i In диапазон If i.Interior.Color = критерий.Interior.Color Then СумЦвет = СумЦвет + i End If Next End FunctionJenya1997
Function СумЦвет(диапазон As Range, критерий As Range) As Double ' Определяет сумму значений в ячейках "диапазона", ' цвет которых совпадает с цветом в ячейке "критерий" Application.Volatile True Dim i As Range For Each i In диапазон If IsNumeric(i.Value) And (i.Interior.Color = критерий.Interior.Color) Then СумЦвет = СумЦвет + i End If Next End Function
[/vba]
Добавьте IsNumeric в условие
[vba]
Код
Function СумЦвет(диапазон As Range, критерий As Range) As Double ' Определяет сумму значений в ячейках "диапазона", ' цвет которых совпадает с цветом в ячейке "критерий" Application.Volatile True Dim i As Range For Each i In диапазон If IsNumeric(i.Value) And (i.Interior.Color = критерий.Interior.Color) Then СумЦвет = СумЦвет + i End If Next End Function