Добрый день, эксперты
Моя первая UDF оказалась довольно сложной... для начала написал макрос, он работает, потом узнал что в функции нельзя использовать, к примеру, select и activate и прочее, все переделал, но результат по-прежнему "ЗНАЧ", посмотрите, кому не трудно, что я делаю не так. Писанины конечно очень много, но уже волосы на голове закончились - все вырвал, и не знаю куда идти дальше.
Или покажите на статью, где перечислено что точно нельзя использовать в UDF.
Моя первая UDF оказалась довольно сложной... для начала написал макрос, он работает, потом узнал что в функции нельзя использовать, к примеру, select и activate и прочее, все переделал, но результат по-прежнему "ЗНАЧ", посмотрите, кому не трудно, что я делаю не так. Писанины конечно очень много, но уже волосы на голове закончились - все вырвал, и не знаю куда идти дальше.
Или покажите на статью, где перечислено что точно нельзя использовать в UDF.
Код |
---|
Function countshit(d As Date, n As String, kol As Integer) As Single '(d As Date, n As String,kol as double) ' Макрос1 Макрос ' Сочетание клавиш: Ctrl+t Dim q(100) As Single Dim tov(100) As String Dim col(100) As Integer Dim r As Integer Dim V(100) As Single Dim sum As Single Dim iRange As Range Dim m(100) As Single Dim s As Single 'ищем дату на листе производства Set iRange = Sheets("Производство").Cells.Find(what:=d, LookIn:=xlValues, lookat:=xlPart) 'собираем имена и количество выпущенных продуктов For i = 1 To kol If iRange = d Then Set iRange = iRange.Offset(0, 1) tov(i) = iRange Set iRange = iRange.Offset(0, 1) q(i) = iRange Set iRange = iRange.Offset(1, -2) Else: i = kol End If Next i 'ищем имена товаров в спецификации, собираем номера их столбцом For i = 1 To kol Set iRange = Sheets("спецификация").Cells.Find(what:=tov(i), LookIn:=xlValues, lookat:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False) col(i) = iRange.Column Next i 'ищем имя сырья и собираем номер его столбца Set iRange = Sheets("спецификация").Cells.Find(what:=n, After:=ActiveCell, LookIn:=xlValues, lookat:= _ xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False) r = iRange.Row 'перемножаем количество на норму For i = 1 To kol m(i) = Sheets("спецификация").Cells(r, col(i)) V(i) = m(i) * q(i) Next i 'складываем произведения For i = 1 To kol s = s + V(i) Next i countshit = s End Function |
воспитан в семье пьющих макрорекордеров