2010-02-03 2 views
2

Я хочу написать функцию Excel, подобную этой. Это расширение функции Dec2BinКак использовать функцию excel внутри редактора vba

Public Function Dec2BinEx(x As Long) 
    Dec2BinEx = dec2bin(x) + 10 
End Function 

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

ответ

6

В общем, вы вызываете функции Excel с помощью Application.WorksheetFunction.SomeFunctionName. Тем не менее, Dec2Bin является особенным, поскольку он является надстройкой, а не чистой функцией Excel. Следовательно, Application.WorksheetFunction здесь не работает. Вместо этого вы должны сделать функции надстройки доступными для вашего кода. Чтобы сделать это, выполните следующие действия

  • В Excel, меню Инструменты/Add-Ins, сделать уверен, что надстройка Analysis ToolPak - VBA импортируется.

  • Затем установите ссылку на эту надстройку в коде: в редакторе VBA, меню Tools/References, добавьте ссылку на atpvbaen.xls.

Тогда ваш исходный код, опубликованный в вашем quesiton, должен работать нормально.

+0

Спасибо. Это работает. Я также пытаюсь вызвать функцию Mod() внутри. Есть ли что-то, на что нужно ссылаться для поддержки функции Mod в коде VBA. – Karthick

+0

@ Karthick: в VBA существует оператор Mod (http://msdn.microsoft.com/en-us/library/aa164528%28office. 10% 29.aspx), которые вы можете использовать. Вместо функции рабочего листа '= Mod (10,3)', вы записываете '10 Mod 3' в свой код. – stephan

+0

Спасибо Stephan. Это прекрасно работает. – Karthick

0

Прежде всего вам необходимо создать модуль, например, из меню select Вставить-> Модуль. Затем внутри этого модуля создайте функцию с именем main. Эта функция запускается по умолчанию при запуске кода. Теперь внутри этой функции называют свою собственную функцию, как это:

Sub main() 
    Call Dec2BinEx(your_value_here) 
End Sub 

Public Function Dec2BinEx(x As Long) 
    Dec2BinEx = dec2bin(x) + 10 
End Function 

Сделав это, убедитесь, что у вас есть ссылка на DEC2BIN функции или если вы создаете, что тоже. Спасибо

+0

Sarfraz, для пользовательской функции Excel, которую нужно вызывать на листе, вам не нужен основной раздел. –

+0

@Charles: спасибо, что сообщили мне об этом, я давно не работал над этим. Спасибо – Sarfraz

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