Аргумент не является обязательным, как его изменить? - PullRequest
0 голосов
/ 11 июля 2020

Я получаю сообщение «Аргумент не является необязательным» при выполнении приведенного ниже кода:

Private Sub CommandButton1_Click()

Dim linia As AcadLine
Dim Pt1(0 To 2) As Double
Dim stopien(0 To 3) As Double
Dim segment As Variant
Dim n As Double
Dim h As Double

n = CDbl(TextBox1)
h = CDbl(TextBox2)

Pt1(0) = 10# '
Pt1(1) = 10# '
Pt1(2) = 0# '


segment = Pt1

For Licznik = 0 To n - 1

stopien(0) = segment(0)
stopien(1) = segment(1)
stopien(2) = segment(0) + h
stopien(3) = segment(1)

Set linia = ThisDrawing.ModelSpace.AddLine(stopien)

segment(0) = stopien(2)
segment(1) = stopien(3)


Next

End Sub

Я могу отладить его, но если я напишу что-нибудь в TextBox1 или TextBox2, я получаю это сообщение.

Не знаю, как это исправить

Ответы [ 2 ]

2 голосов
/ 11 июля 2020

Сообщение об ошибке точно сообщает вам, в чем проблема ... а именно, что вы не предоставляете необходимый аргумент. В этом случае строка, вызывающая нарушение, находится ниже:

Set linia = ThisDrawing.ModelSpace.AddLine(stopien)

Метод AddLine принимает как StartPoint, так и EndPoint, и вы указываете только одну из них.

0 голосов
/ 11 июля 2020

CDbl в текстовое поле .. хм .. Разве это не должно быть Textbox1.value? Я думаю, вам нужно больше обработки ошибок на входе для Textbox1 и Textbox2.

Например, сделайте что-то подобное, прежде чем начинать преобразование - поэтому установите точку останова на свой первый набор значений n = CDbl (Textbox1). Затем убедитесь, что вы видите отладочные / немедленные представления в редакторе VBA. Затем напишите что-нибудь вроде этого или добавьте Textbox1 в часы и разверните его свойства, чтобы убедиться, что вы правильно используете значения объекта.

Debug.print(Textbox1)
Debug.print(Textbox1.value)

Для решения проблем при преобразовании или w / e вы хотите добавить обработчики ошибок для проверки значений перед установкой значений в переменные.

MrExcel classi c обсуждение ошибок ввода в пользовательской форме

...