Функция с использованием VBA - PullRequest
0 голосов
/ 11 февраля 2020

Я хочу преобразовать этот код в формат функции. Я попытался ввести функцию вместо вспомогательной версии, но когда я набираю = версию в ячейку, ничего не появляется. любая помощь приветствуется

Sub Version()

    If Range("B2").Value = 20.2 Then
        Range("B22").Value = 20.3

    If Range("B2").Value = 20.3 Then
        Range("B22").Value = 20.1
    End If
    End If

End Sub

Ответы [ 2 ]

3 голосов
/ 11 февраля 2020

Чтобы использовать эту функцию, вам нужно написать =Version(B2) в ячейке B22:

Option Explicit
Function Version(Target As Range) As Single

    Select Case Target.Value
        Case 20.2
            Version = 20.3
        Case 20.3
            Version = 20.1
        '...
    End Select

End Function

Пример:

Exmaple

0 голосов
/ 11 февраля 2020

Прошло много времени с тех пор, как я написал VBA. Ваша подпрограмма предлагает некоторые странные, и поэтому я подозреваю, что непреднамеренная логика c Я подозреваю, что вы имеете в виду, что если значение 20,2, вернуть 20,3, а если 20,3, вернуть 20,1.

Как написано, он НИКОГДА не установит B22 на 20,1, потому что B2 должен быть равен 20,2 и 20,3 из-за вложенного if.

То, что я предлагаю, - это функция, которая принимает диапазон в качестве входных данных (предположительно ячейка B2) и возвращает значение. Если ввод 20,2, вы получите 20,3. Если это 20,3, вы получите 20,1. В противном случае вы получите то, что было в B2. Вы можете поместить формулу = customFun c (B2) в ячейку B22, чтобы получить результат.

Public Function customFunc(rngIn As Range)
    custFunc = rngIn.Value
    If rngIn.Value = 20.2 Then
        customFunc = 20.3
    End If
    If rngIn.Value = 20.3 Then
        customFunc = 20.1
    End If
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...