VBA中的对象所需错误

时间:2013-12-10 04:22:15

标签: excel vba excel-vba

我有一个表格,我用2个文本输入框和excel中的提交按钮创建。

我需要基本上将用户输入的数据输入到我的2个表单字段中,然后将其放入excel中的单元格中。

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您只能使用SetObject传递给不包含实际值或结果的变量。

示例:

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的{​​{1}}传递到目标范围。

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

Value

由于您没有传递startpoint = Me.Textbox1.Value Range("A1").Value = startpoint 而是传递Set,因此无需使用Object。 希望这会有所帮助。