2014-12-30 6 views
0

Я новичок в VBA и использую excel 2013. Я весь день ломаю голову над этой ошибкой! Линии, отмеченные звездочками получают
«Применение или объекта определенную ошибку»

Моя функция должна сделать 2 вещи ...
1) дают ток ячейки а значение
2) изменить цвет заливки другой ячейки

Excel VBA-выпуск с диапазонами «Определенная пользователем или объектная ошибка»

Там нет никаких проблем с # 1, но # 2 продолжает erroring из
Это код, который я сейчас использую ...
Я звоню его внутри ячейки в Excel, давая ему формулу: = ScoreIt()

Function ScoreIt() 

Dim TotalVal As Integer, LRVal As Integer, LYVal As Integer, LGVal As Integer 
TotalVal = 0 
LRVal = 0 
LYVal = 1 
LGVal = 2 

Dim CurrentRow As String, BedCell As String, Beds As Integer 
CurrentRow = ActiveCell.Row 
BedCell = Range("K" & CurrentRow).Address(False, False) 
Beds = Range(BedCell).Value 

If (Beds < 2) Or (Beds > 5) Then 
    TotalVal = TotalVal + LRVal 
    ** Range(BedCell).Interior.ColorIndex = 38 ** 
ElseIf (Beds = 2) Or (Beds = 5) Then 
    TotalVal = TotalVal + LYVal 
    ** Range(BedCell).Interior.ColorIndex = 36 ** 
ElseIf (Beds = 3) Or (Beds = 4) Then 
    TotalVal = TotalVal + LGVal 
    ** Range(BedCell).Interior.ColorIndex = 35 ** 
End If 

ScoreIt = TotalVal 

End Function 



Спасибо вы

+0

Почему бы не просто сделать '' BedCell' на объект Range' и просто называют 'установить BedCell = Range ("K" и CurrentRow)' а затем просто использовать 'BedCell.Interior.ColorIndex = 38' – chancea

+0

Я уже пробовал это, он тоже не работал, BedCell возвращает значение в ячейке, а не адрес/местоположение ячейки. Затем я попытался добавить .Address (False, False) до конца, но это только что закончилось ошибкой несоответствия типа. – Naimlis

ответ

1

Формулы рабочих таблиц, даже UDF, не могут изменять свойство объекта диапазона или возвращать значение/изменять свойство в другом объекте диапазона. Возвращаемое значение функции ограничено ячейкой, из которой она была вызвана.

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

Вот выдержка с сайта поддержки Microsoft:

Пользовательская функция, называемая формулой в ячейке листа не может изменить окружение Microsoft Excel. Это означает, что такая функция не может выполнять никаких из следующих действий:

-Вставить, удалить или форматировать ячейки в электронной таблице.

-Изменить другое значение ячейки.

-Переведите, переименуйте, удалите или добавьте листы в книгу.

-Изменить любые параметры среды, такие как режим расчета или виды экрана.

-Добавить имена в книгу.

-Установить свойства или выполнить большинство методов.

Цель пользовательских функций состоит в том, чтобы позволить пользователю создать пользовательскую функцию , которая не входит в функции, отправляемые с помощью Microsoft Excel. Функции, входящие в состав Microsoft Excel, также не могут изменить среду среды . Функции могут выполнять вычисление, которое возвращает либо значение, либо текст в ячейку, в которую они введены. Любые изменения окружающей среды должны производиться с использованием базовой подпрограммы Visual .

Вы можете найти полный текст статьи здесь: http://support.microsoft.com/kb/170787