2014-02-05 5 views
1

Я пишу макрос в VBA, чтобы получить сумму значений диапазона в Excel 2007. Однако, когда я пытаюсь ввести следующий код:Разница между Application.sum и Application.Sum в Excel 2007 VBA

sum = Application.Sum(Range("C2:C19") 

редактор превращает ее в

sum = Application.sum(Range("C2:C19") 

Поскольку я не был уверен, что разницы между ними я попробовал их в Immediate области с заявлением для печати. Тот, у кого Application.sum дает мне неправильную сумму, а тот, у кого Application.Sum дает мне правильную сумму. Но поскольку редактор автоматически меняет сумму на сумму, я не могу продолжить. Может кто-нибудь, пожалуйста, скажите мне, что здесь происходит?

+1

Измените имя переменной из 'sum' в, например. 'mySum' и попробуйте снова набрать код. В качестве альтернативы попробуйте использовать «WorksheetFunction.Sum (Range (« C2: C19 »)). –

+0

Я изменил' sum' на 'transSum', но проблема не устранена. Мне нужна сумма в переменной, если бы «WorksheetFunction.Sum()» выполнил это, я имею в виду, что добавляет функции к рабочему листу, не так ли? –

+2

'WorksheetFunction.Sum()' и 'Application.Sum()' работают почти одинаково, они отличаются тем, как вам нужно иметь дело при возврате ошибки. Просто попробуйте 'WorksheetFunction.Sum()'. –

ответ

1

Основополагающий вопрос о том, почему VBIDE меняет «Сумма» на «сумму», связан с функциональностью автокапитализации редактора. Вы объявили переменную как «сумму», которая имеет преимущество перед встроенной функцией, когда дело касается капитализации. Если вы указали свою переменную как «Сумма», вы не увидите изменения. В действительности Application.Sum и Application.sum одинаковы.

Проблема, с которой вы столкнулись, заключалась в том, что вы использовали существующую функцию как имя переменной. Вот почему это не сработает.

Смежные вопросы