Функция MS Access Nz () не распознается в MS Excel - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь написать выражение в MS Access, которое возвращает строку текста "New Policy" в операторе Iif() после того, как возвращается ошибка.
Когда я экспортирую данные из Access в Excel,говорит мне, что Nz() не распознано.
Есть ли альтернатива этой функции?Мое выражение доступа выглядит следующим образом:

Nz(IIf([Policy Status]=[Input - WFAC Previous Day]![Policy Status 1],"Remains " & [Policy Status],[Input - WFAC Previous Day]![Policy Status 1] & " to " & [Policy Status]), "New Policy")

Ответы [ 3 ]

0 голосов
/ 13 декабря 2018

Nz определено в библиотеке типов Microsoft Access, на которую автоматически ссылаются, когда ваше ведущее приложение, ну, в общем, Access.

Если вы добавите ссылку на библиотеку типов Access в вашем проекте Excel,вы должны иметь возможность использовать Nz ... но тогда ваш проект Excel не будет работать, если Access не установлен, что ... странно и довольно тяжело.

Что означает Nz делать?Похоже, какая-то функция Coalesce, которую довольно легко реализовать самостоятельно и настраивать по мере необходимости.Как то так?

Public Function Coalesce(ByVal value As Variant, Optional ByVal value_when_null As Variant = 0) As Variant

    Dim return_value As Variant
    On Error Resume Next 'supress error handling

    If IsEmpty(value) Or IsNull(value) Or (VarType(value) = vbString And value = vbNullString) Then
        return_value = value_when_null
    Else
        return_value = value
    End If

    Err.Clear 'clear any errors that might have occurred
    On Error GoTo 0 'reinstate error handling

    Coalesce = return_value

End Function
0 голосов
/ 13 декабря 2018

Для этого вам не нужен Nz:

IIf(IsNull([Policy Status]), "New Policy",
IIf([Policy Status] & "" = [Input - WFAC Previous Day]![Policy Status 1],
"Remains " & [Policy Status],
 [Input - WFAC Previous Day]![Policy Status 1] & " to " & [Policy Status]))
0 голосов
/ 13 декабря 2018

Если вы используете VBA, вы можете добавить ссылку на библиотеку MS Access, например, «библиотеку объектов Microsoft Access 14.0». Тогда функция Nz доступна как Access.Nz(value, "New Policy"). Вы даже можете создать пользовательский интерфейс.функция для использования в электронных таблицах Excel:

Public Function Nz(Value As Variant, Optional ValueIfNull As Variant = "New Policy") As Variant
    Nz = Access.Nz(Value, ValueIfNull)
End Function

Надеюсь, что поможет

...