Функция EXCEL VBA, определяемая пользователем – иначе, если

Приложенный код запускается на VBA, но я не понимаю, почему возникает ошибка, говорит else без if if if if end end if. Я почти уверен, что я соответствовал каждому концу, если с выражением if.

Sub teee () предназначен только для проверки функции decimalize. Было бы очень проверить код и рассказать мне, что не так с моим кодом … Я почти близок к завершению проекта, если я могу устранить эту проблему.

Sub teee() sss = "-1-21+" MsgBox (decimalize(sss)) End Sub 

 Function decimalize(s As Variant) As Long Dim checkers As Variant Dim ab As Long Dim leftnum As Long Dim rightnum As Long Dim poneg As Integer checkers = s ab = 0 leftnum = 0 rigntnum = 0 poneg = 0 'Positive payup or negative payup If Left(checkers, 1) = "-" Then poneg = 1 lencheckers = Len(checkers) checkers = Mid(checkers, 2, lencheckers - 1) Else: poneg = 0 End If startp = InStr(checkers, "-") If startp = 2 Then leftnum = Left(checkers, 1) ElseIf startp = 3 Then leftnum = Left(checkers, 2) ElseIf startp = 4 Then leftnum = Left(checkers, 3) End If rightnum = Mid(checkers, startp + 1, 2) If InStr(checkers, "+") > 0 Then ab = 0.5 ElseIf InStr(checkers, "1/4") > 0 Then ab = 0.25 ElseIf InStr(checkers, "1/8") > 0 Then ab = 0.125 End If rightnum = rightnum + ab If poneg = 0 Then decimalize = rightnum + leftnum * 32 ElseIf poneg = 1 Then decimalize = (rightnum + leftnum * 32) * -1 End If End Function 

Спасибо заранее

@Vityata показал один способ устранить эту конкретную ошибку. Другой способ – избегать, If вообще и использовать Select Case . Полученный код несколько читаем:

 Select Case startp Case 2: leftnum = Left(checkers, 1) Case 3: leftnum = Left(checkers, 2) Case 4: leftnum = Left(checkers, 3) End Select 

Кроме того, у вас есть произвольный шаблон объявления некоторых переменных, но не других, и у вас есть хотя бы одна переменная typo: rigntnum = 0 почти наверняка будет rightnum = 0 . Вам действительно нужно использовать Option Explicit в верхней части всех ваших модулей (также включите обязательное объявление Require Variable Declaration в опциях редактора VBA). Это поможет вам написать код, который не подвержен случайным ошибкам.

Измените его так:

 If startp = 2 Then leftnum = Left(checkers, 1) ElseIf startp = 3 Then leftnum = Left(checkers, 2) ElseIf startp = 4 Then leftnum = Left(checkers, 3) End If 

Info: Когда вы записываете результат после «then» в той же строке, не следует писать end if. Таким образом, VBA не понимает, откуда приходит следующий ElseIf.

В значительной степени вам разрешено использовать следующие два примера:

 'Example 1 (no end if here) if startp = 2 then leftnum = Left(checkers,1) 'Example 2 (you need end if here) if startp = 2 then leftnum = Left(checkers,1) end if 
  • Excel Max из подмножества данных MAX IF IF
  • Почему мой вывод для MsgBox ошибочен для этого задания VBA Hotel Charge Macro Assignment?
  • Excel: CountIf Quandry
  • VLOOKUP дата в диапазоне дат
  • Цвет диапазона ячеек зависит от значения другой ячейки?
  • Как добавить числа в Excel в одной строке и отделить их от «суффикса»?
  • VBA Excel. Посмотрите имя листа, IF tab «запустил», затем пропустил эти листы
  • Формула Excel: если условие выполнено, то условие
  • VBA * для каждой клеточной петли * IF (значение в столбце 1) = x И IF (эквивалентное значение в столбце 2)> 7 THEN
  • Поиск рабочих листов для возврата True или False на основе значения
  • Преобразование длинной вложенной if или формулы в случай vba
  • Interesting Posts

    Экспорт R блестящего вывода на несколько листов одного excel.

    Как подключить Excel с заблокированной базой данных из vba?

    Как прочитать Power Query -> Заголовок ответа Web.Contents?

    «Перегрузка» F9 (или сдвиг + F9) в электронной таблице Excel с функцией VBA?

    Excel VBA для назначения границы для группы на основе имени столбца и значения ячейки

    Как экспортировать DataTable в Excel, но сохранить форматирование

    Копировать значения между таблицами при изменении ячейки

    формула для подсчета блоков, удовлетворяющих критериям

    Связывание ячеек из двух разных файлов excel, но затем сохранение цифр, если вы отправляете по электронной почте только один файл?

    Как сохранить измененный файл excel с помощью Roo :: Excel?

    ЕСЛИ ТОГДА цикл не устанавливает значение правильно

    Импорт Excel в базу данных на C # .NET

    код для дублирования информации между электронными таблицами Excel

    UDF для извлечения данных из базы данных доступа

    В Excel, как сканировать дубликат в столбце A. Разместите информацию на другом листе

    Давайте будем гением компьютера.