Попробуйте заменить код следующим образом:.
If k > 0 Then
Sht1.Cells(erow, 3) = CInt(sht3.Cells(i, 5).value) + 1
Debug.Print CInt(sht3.Cells(i, 5).value)
Sht1.Cells(erow, 4) = CInt(sht3.Cells(i, 6).value) + 1
Debug.Print CInt(sht3.Cells(i, 6).value)
Sht1.Cells(erow, 1) = Sht1.Cells(erow - 1, 1).value + 1
Debug.Print Sht1.Cells(erow - 1, 1).value
End If
И увидеть, где он ломает. Посмотрите на ближайшее окно. Вероятно, это не число.
Если изменить код немного, вы можете получить то, что вы хотите:
Public Sub TestMe
If k > 0 Then
Sht1.Cells(erow, 3) = IncreaseWithOne(sht3.Cells(i, 5).value)
End If
End Sub
Public Function IncreaseWithOne(strValue As String) As String
Dim myVal As Long
myVal = Split(strValue, "-")(1)
IncreaseWithOne = Split(strValue, "-")(0) & "-" & Format(myVal + 1, "0000")
End Function
Но это действительно лучше, если вы измените свой вопрос, что вы хотите. Например, вы хотите разбить строку 25-00001
, отнести к целому числу и прирастить вторую часть и вернуть 25-00002
. Поскольку добавление целого к строке не поддерживается никаким языком программирования.
В чем проблема с вашим кодом? – Vityata
получение ошибки во время выполнения 13 –