2013-08-14 4 views
-1

Я написал подпрограмму и использовал следующий код без ошибок в этой подпрограмме.Дата передачи Массив для выдачи UDF 13

только соответствующий код:

Dim CandleEndTimes() as Date 

NoOfCndlInDay = 5 

ReDim Preserve CandleEndTimes(NoOfCndlInDay) 

CandleEndTimes = Array(#10:30:00 AM#, #12:00:00 PM#, #1:30:00 PM#, #3:00:00 PM#, #3:30:00 PM#) 

Затем, чтобы сделать эту подпрограмму обрабатывать более одного случая, я удалил заявление присваивая значения массива CandleEndTimes и определил его в качестве параметра, как при

Sub CustomCandles(UseOnBookName As String, UseOnSheetName As String, NoOfCndlInDay As Integer, CandleEndTimes() As Date) 

Код подпрограммы, используемой для вызова вышеуказанного подраздела:

Sub callingcust() 

Dim Min90CandleEndTimes() As Date 

ReDim Preserve Min90CandleEndTimes(5) 

Min90CandleEndTimes = Array(#10:30:00 AM#, #12:00:00 PM#, #1:30:00 PM#, #3:00:00 PM#, #3:30:00 PM#) 


End Sub 

При отладке кода в инструкции, используемой для присвоения значений, я получаю сообщение об ошибке 13

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

Просьба помочь!

ответ

0

функция массива возвращает Variant типа, который почему вы получите ошибку типа несовпадения - вы можете назначить только один массив в другой в рамках одной операции, если целевой массив является динамическим и тем же типа в качестве источника , вам потребуется 5 дискретных заданий

Dim Min90CandleEndTimes() As Date 

ReDim Preserve Min90CandleEndTimes(5) 

Min90CandleEndTimes(1) = #10:30:00 AM# 
Min90CandleEndTimes(2) = #12:00:00 PM# 
Min90CandleEndTimes(3) = #1:30:00 PM# 
Min90CandleEndTimes(4) = #3:00:00 PM# 
Min90CandleEndTimes(5) = #3:30:00 PM# 

, кстати, если у вас нет Option Base 1 комплект, ваш массив состоит из 6 элементов ;-)

+0

Спасибо так много Joise! Я знаю, что я опоздал на миллион лет! – BrajkishorB