2013-12-10 13 views
0

У меня есть форма, которую я создал с двумя текстовыми полями ввода и кнопкой отправки в excel.Ошибка объекта в VBA

Мне нужно в основном взять данные, которые пользователь вводит в мои 2 поля формы, а затем помещать их в ячейки в excel.

Вот код, который у меня есть, но по какой-то причине я получаю ошибку, требуемую объектом, даже если я установил свои переменные.

Private Sub CommandButton1_Click() 
    Dim startPoint As String, endPoint As String 

    Set startPoint = ActiveDocument.FormFields("TextBox1").Result 
     If startPoint = "" Then Exit Sub 
      Worksheets(1).Range("A1").value = startPoint 
    Set endPoint = ActiveDocument.FormFields("TextBox2").Result 
     If endPoint1 = "" Then Exit Sub 
      Worksheets(1).Range("A4").value = endPoint 

    m1 = Worksheets(1).Range("D4").value 
    km1 = m1/1000 
    MsgBox "Your starting point is " & startPoint & vbCrLf _ 
     & vbCrLf & "It is " & m1 & "m" & " (" & km1 & "km) from " & endPoint 

End Sub 

ответ

1

Рассмотрим этот код (если ваша форма является UserForm1):

startPoint = UserForm1.TextBox1.Text 
If startPoint = "" Then Exit Sub 
Worksheets(1).Range("A1").Value = startPoint 

endPoint = UserForm1.TextBox2.Text 
If endPoint = "" Then Exit Sub 
Worksheets(1).Range("A4").Value = endPoint 
+0

+1: Лучший способ сделать это, говорит. – Manhattan

1

Вы используете только Set пройти Object переменной исключая фактического значения или результата.

Пример:

Set startpoint = Me.Textbox1.Value 
Range("A1").Value = startpoint 

Это даст вам необходимую ошибку объекта, поскольку Me.Texbox1.Value не относится к действительному object, но в Value.

Правильный путь:

Set startpoint = Me.Textbox1 
Range("A1").Value = startpoint.Value 

В выше, вы передаете Textbox1 объект startpoint.
И затем передайте Value из этого object в целевой диапазон.

Другой способ - передать переменную Value.

startpoint = Me.Textbox1.Value 
Range("A1").Value = startpoint 

Нет необходимости использовать Set, чтобы получить, так как вы не пропускание Object но и Value.
Надеюсь, это поможет.

Смежные вопросы