#excel #vba
#excel #vba
Вопрос:
У меня есть этот код для дублирования каждой строки на основе значения в столбце O (если оно находится между 1 и 50).
If ((VInSertNum > 1) And VInSertNum < 50 And IsNumeric(VInSertNum)) Then
Range(Cells(xRow, "B"), Cells(xRow, "O")).Copy
Range(Cells(xRow 1, "B"), Cells(xRow VInSertNum - 1, "O")).Select
Selection.Insert Shift:=xlDown
xRow = xRow VInSertNum - 1
End If
И я получаю ошибку в последней строке перед End, если для некоторых очень специфических нецелых сценариев. Если число равно 1,9 или выше до 2, оно создаст две строки и будет работать нормально. Но когда число меньше, например, 1.4 или меньше, оно продолжает пытаться дублировать эту строку до бесконечности. Что также странно, так это то, что такие числа, как 11.4 или 10.4 или 44.4, работают просто отлично.
Почему это работает для некоторых нецелых чисел, но не для других?
Комментарии:
1. Очень смущен, почему вы вообще используете нецелые числа. Возможно, вам нужны
WorksheetFunction.Round
ваши числа.2. Если
VInSertNum
, вероятно, объявленоAs Integer
, равно 1.4, округлено до 1, это означает, чтоxRow 1 - 1 = xRow
…3. Данные взяты из заказов, и иногда клиенты могут заказать 1,4 случая. Спасибо FaneDuru, это имеет смысл.