Определяемый пользователем тип не определена ошибка - PullRequest
0 голосов
/ 10 июня 2011

Привет, я новичок в программировании VBA Excel. Я получаю сообщение об ошибке «Пользовательский тип не определен». Я искал везде и не могу найти ответ на мою конкретную проблему. Многие решения требовали добавления ссылок, что, похоже, не относится к моей ситуации. Расчет возвращается правильно, но сообщение об ошибке сводит меня с ума! Также не происходит вызов макроса в конце.

    Function MinutesOver(duration, start_time, end_time)

      If Not (duration = "") Then
        If ((duration * 60) > 600) Or (((duration * 60) + (start_time * 24 * 60)) >    (TimeValue("17:00:00") * 24 * 60)) Then
          MinutesOver = (duration * 60) - ((end_time - start_time) * 24 * 60)
        Else
          MinutesOver = ""
        End If
      Else
        MinutesOver = ""
      End If

      Call AddRowDeleteConstants

    End Function

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

    Function MinutesOver(duration As Integer)
      MinutesOver = duration
     'Call AddRowDeleteConstants
    End Function

Любые отзывы будут оценены. Спасибо.

    Sub AddRowDeleteConstants() 
      'On Error GoTo NoConstants 
      With ActiveCell.EntireRow
        .Copy 
        .Insert Shift:=xlDown 
        .SpecialCells(xlCellTypeConstants).ClearContents 
      End With 
    Exit Sub 

     'NoConstants: 
     'MsgBox "There were no constants to delete"
    End Sub 

Ответы [ 2 ]

1 голос
/ 11 июня 2011

Я запустил вашу функцию без ошибок, но ...

Пользовательская функция не может изменять другие ячейки.При вызове AddRowDeleteConstants, независимо от того, произошли ли ошибки, команды Copy, Insert и PasteSpecial ничего не делают, потому что они фактически вызываются из определяемой пользователем функции.

0 голосов
/ 10 июня 2011

Я не получаю никаких ошибок с вашим кодом, но, возможно, вам нужно указать тип функции?

Function MinutesOver(duration As Integer) as Integer

просто догадка ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...