У меня есть следующие простые таблицы Excel с этой формулой в ячейке A1:Ограничения на Application.Inputbox и клетки отформатирован как текст
= MID(B1;1;2))
, который дает мне значение 30.
A B C
1 30 30:30
2
3
4
5
Теперь я хочу применить следующий цикл в макросе к нему:
Sub test()
Do
first_row = Application.InputBox("Below which row new row(s) should be inserted?" _
& vbCr & "Min: " & Sheets("Sheet1").Range("A1") & " Max: 500")
If first_row = False Then Exit Sub
If first_row > 500 Or first_row < Sheets("Sheet1").Range("A1") Then MsgBox ("Row has to be >= " & Sheets("Sheet1").Range("A1").Value & " and <= 500")
Loop Until first_row <= 500 And first_row >= Sheets("Sheet1").Range("A1") Or first_row = False
End Sub
В этом макросе пользователь получает окно с сообщением, в которое он должен ввести номер. Этот номер должен быть между значением в ячейке A1 (в данном случае: 30) и 500.
Однако, как только пользователь вводит число более 100, цикл не принимает значение, хотя оно составляет от 30 до 500 Он принимает только значения до 100.
До сих пор я полагал, что проблема может быть вызвана ячейкой B1, которая формируется как «ТЕКСТ». В противном случае невозможно использовать «30:30» в этой ячейке.
Поэтому я попытался изменить формулу в A1 на следующее:
= VALUE(MID(B1;1;2)))
Это делает работу, но тогда система также позволяет значения ниже 30.
У вас есть какие-либо идеи, как решить Эта проблема?
Проблема не значение 'A1', но возвращаемое значение [Application.InputBox] (https://msdn.microsoft.com/en-us/library/office/ff839468.aspx). Это будет текст, пока вы не будете использовать 'Type: = 1' или преобразовать его с помощью' Val (first_row) '. –