VBA if else loop in excel, возвращающий #VALUE

Привет всем В новом для использования VBA в excel и пытался создать функцию, которая будет смотреть на число и возвращать его как шестизначное число.

Функция, которую я написал, чтобы попытаться выполнить это, ниже, но когда я использую команду = Res (A1) в ячейке, я просто получаю #VALUE! как ответ.

Значение в ячейке на данный момент составляет 30508.

Любая помощь, которую кто-либо может предложить решить, будет весьма признательна. Спасибо, парни.

Function Res(myval As Integer) As Integer Res = 0 If ((myval > 0) And (myval < 10)) Then Res = myval * 100000 ElseIf ((myval > 9) And (myval < 100)) Then Res = myval * 10000 ElseIf ((myval > 99) And (myval < 1000)) Then Res = myval * 1000 ElseIf ((myval > 999) And (myval < 10000)) Then Res = myval * 100 ElseIf ((myval > 9999) And (myval < 100000)) Then Res = myval * 10 ElseIf ((myval > 999999) And (myval < 10000000)) Then Res = myval / 10 Else Res = myval End If End Function 

Изменить Function Res(myval As Integer) As Integer :

 Function Res(myval As Long) As Long 

Вы получаете максимальный максимум.

Длинный означает длинное целое число, и вы хотите использовать его в любое время, когда ваш номер может превышать 30 тысяч.

Вам нужно использовать long вместо integer

целое число охватывает только от -32,768 до 32,767

длинные покрытия -2,147,483,648 до 2,147,483,647

  Function Res(myval As Long) As Long Res = 0 If ((myval > 0) And (myval < 10)) Then Res = myval * 100000 ElseIf ((myval > 9) And (myval < 100)) Then Res = myval * 10000 ElseIf ((myval > 99) And (myval < 1000)) Then Res = myval * 1000 ElseIf ((myval > 999) And (myval < 10000)) Then Res = myval * 100 ElseIf ((myval > 9999) And (myval < 100000)) Then Res = myval * 10 ElseIf ((myval > 999999) And (myval < 10000000)) Then Res = myval / 10 Else Res = myval End If End Function 
 Function Res(myVal as long) As Long Res = myVal * 10 ^ ( 6 - Len(Cstr(myVal)) ) End Function 

Примечание. Это все еще страдает от той же проблемы, что и исходный подход:

Если myVal – 9999999 (7 ​​цифр), myVal / 10 – 999999,9, а Clng (999999,9) – 10000000 (еще семь цифр)

Interesting Posts

Использование шаблона в sumproduct в excel

Ошибка 450 при использовании AcroExch.AVdoc.Open для открытия pdf-файла с помощью vba

Как заполнить пустые ячейки в Col B на основе взаимосвязи между заполненными ячейками в Col A и Col B

Проблемы с систематической гиперссылкой документов, расположенных в папке на флэш-диске в Excel

Экспорт в Excel из ASP.NET создает файлы, не читаемые в Excel Viewer

C # Excel Запрос

GET.DOCUMENT (10) (ExecuteExcel4Macro) закрыл книгу Excel

Как вернуть array () в функцию vba, чтобы использовать его в ячейках Формулы массива (матричная формула): для split texte в многоэлементных ячейках

Есть ли способ создать RDBMS-поведение в Excel для поиска столбцов строк?

Цикл Vba-Excel удаляет последнюю строку таблицы

Найти значение из одной ячейки, скопировать значение из ячейки рядом с этой ячейкой и вставить ее на другой лист

Копирование строк на основе значений нескольких ячеек

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

Настройка увеличения без выбора в Excel VBA

Как написать собственный визуализатор XLSX для grails

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