Ошибка компиляции: Sub или функция не определены (MRound) - PullRequest
0 голосов
/ 17 января 2019

Я построил следующую функцию, чтобы изменить формат подшипника с DD.MMSS на DD ° MM'SS ", однако я получаю вышеупомянутую ошибку, когда функция достигает команды MRound, встроенной в пользовательскую функцию I Я тестирую.

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

Ваша помощь очень ценится!

Функциональный тест (Bearing_DMS как одиночный) в виде строки

Dim degrees As String
Dim minutes_working As Single
Dim minutes As String
Dim seconds_working As Single
Dim seconds As String

    'Determine degrees value
    If Int(Bearing_DMS) < 10 Then
        degrees = "    " & Int(Bearing_DMS)
        ElseIf Int(Bearing_DMS) >= 10 And Int(Bearing_DMS) < 100 Then
        degrees = "  " & Int(Bearing_DMS)
        Else
        degrees = Int(Bearing_DMS)
    End If

    'Determine minutes_working value
    minutes_working = (Bearing_DMS - degrees) * 100

    'Determine minutes value
    If minutes_working < 1 Then
        minutes = "00"
        ElseIf minutes_working >= 1 And minutes_working < 10 Then
        minutes = "0" & Int(minutes_working)
        Else
        minutes = Int(minutes_working)
    End If

    'Determine seconds_working value
    seconds_working = (minutes_working - minutes) * 100

    'Determine seconds value
    If seconds_working < 1 Then
        seconds = "00"
        ElseIf seconds_working >= 1 And seconds_working < 10 Then
        seconds = "0" & MRound(seconds_working, 1)
        Else
        seconds = MRound(seconds_working, 1)
    End If

    'Determine final value to display

    Test = degrees & "° " & minutes & "' " & seconds + Chr(34)

Функция завершения

Ответы [ 2 ]

0 голосов
/ 17 января 2019

MROUND - это формула ячейки, а не функция VBA. Вы можете получить к нему доступ из VBA, используя WorksheetFunction.MRound

0 голосов
/ 17 января 2019

MRound не является функцией VBA.Изменить MRound(seconds_working, 1) на WorksheetFunction.MRound(seconds_working, 1)

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