Я использую UDF "InBetween" в Excel VBA, и он работает для 43 строк, а затем перестает работать - PullRequest
0 голосов
/ 02 ноября 2019

Использование этой Пользовательской функции VBA , которая выдает список чисел, которые находятся между заданным набором номеров параметров. Он работает до тех пор, пока номера параметров не станут больше 29 999 в строке 43. Это код UDF:

Function InBetween(MyFirst As Integer, MyLast As Integer)
Dim foo As String
Dim i As Long
foo = MyFirst + 1
For i = MyFirst + 2 To MyLast - 1
    foo = foo & "," & i
Next i
InBetween = foo
End Function

И я использую формулу созданного = InBetween, чтобы вернуть все числа между номерами параметров. Я также использую функцию сцепления для включения номеров параметров в список. Все столбцы A и B отформатированы одинаково.

enter image description here

1 Ответ

0 голосов
/ 02 ноября 2019

Как уже упоминалось в комментариях, использование переменной Integer нецелесообразно. Они легко переполняются, так как не могут вместить такое большое количество. Вместо этого используйте Long тип данных.

Кроме того, вы можете захотеть переписать свой Function в соответствии с:

Function InBetween(MyFirst As Long, MyLast As Long) As String
    InBetween = Join(Application.Evaluate("TRANSPOSE(Row(" & MyFirst & ":" & MyLast & "))"), ",")
End Function

Это будет до 1048576 (В Excel 2019 как минимум)

...