2013-12-10 61 views
0

我有一个表格,我使用了两个文本输入框和一个excel中的提交按钮。VBA中的对象所需的错误

我需要基本上把用户输入到我的2个表单域中的数据,然后把它放入Excel中的单元格。

这是我有的代码,但由于某种原因,即使设置了我的变量,我也得到一个Object所需的错误。

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:最好的方法去做,methinks。 – Manhattan

1

你只使用SetObject传递到除实际值或结果的变量。

例子:

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

这会给你因为Me.Texbox1.Value对象所需的错误不是指一个有效的objectValue

有道:

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

在上面,你通过Textbox1对象startpoint
然后将该objectValue传递到目标范围。

另一种方法是直接将Value传递给变量。

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

无需使用Set得到,因为你没有传递一个ObjectValue
希望这会有所帮助。