首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择命令按钮时会打开Userform。如何将数据输入到表单中的文本框中,在单独的工作表中插入行?

选择命令按钮时会打开Userform。如何将数据输入到表单中的文本框中,在单独的工作表中插入行?
EN

Stack Overflow用户
提问于 2019-01-16 10:08:07
回答 3查看 51关注 0票数 1

我正在尝试创建一个UserForm,当我选择一个命令按钮时,它将打开。它的目的是从选定的关于“旅游”的行中获取数据--即旅游代码、开始日期和结束日期,然后由我“拆分”旅游,为此我需要输入新的旅游代码、开始日期和结束日期。

我需要从表单中的数据进入一个单独的表格(称为“拆分”),这样我就可以在一张纸中记录原始的旅游细节和新的旅游细节。但是当我试图运行宏时,我会得到一个运行时错误'1004‘(应用程序定义的或对象定义的错误)。我是VBA的新手,我不知道我做错了什么!

到目前为止,这是我的代码:

代码语言:javascript
复制
Private Sub UserForm_Initialize()
    With Me
        .OriginalTourCode.Value = Cells(ActiveCell.Row, "A").Value
        .OriginalStartDate.Value = Cells(ActiveCell.Row, "B").Value
        .OriginalEndDate.Value = Cells(ActiveCell.Row, "C").Value
    End With
End Sub

Private Sub SplitTourCommand_Click()

Dim ctrl As Control
    Dim ws As Worksheet
    Set ws = Sheets("Splits")

erow = ws.Cells(Rows.Count, 1).End(x1Up).Offset(1, 0)
    Cells(erow, 1) = OriginalTourCode.Text
    Cells(erow, 2) = OriginalStartDate.Text
    Cells(erow, 3) = OriginalEndDate.Text
    Cells(erow, 4) = NewTourCode1.Text
    Cells(erow, 5) = NewStartDate1.Text
    Cells(erow, 6) = NewEndDate1.Text
    Cells(erow, 7) = NewTourCode2.Text
    Cells(erow, 8) = NewStartDate2.Text
    Cells(erow, 9) = NewEndDate2.Text
    Cells(erow, 10) = ReasonForSplit.Text


End Sub

Private Sub CloseCommand_Click()

Unload Me

End Sub

部分将自动填充UserForm的前三个单元格,然后我将使用该表单输入新数据。

Close命令部分只是表单上要退出的单独按钮。

如何获得表单,当我单击“拆分旅游”命令按钮,将数据输入到下一个“拆分”表的空行中?

提前谢谢你的帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-01-16 10:33:17

代码语言:javascript
复制
erow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row

代码中有两个错误。首先,命令是xlUp,而不是x1Up -- "xl“是”Option Explicit“的缩写,而不是xl-这是一个非常好的例子,说明了为什么您几乎总是应该使用Option Explicit

第二:您的代码- is将尝试将单元格中的.Value放入非类型化变量erow --因为单元格是空白的(作为最后一个单元格下面的单元格具有数据),这意味着erow将始终 be 0。而第0行不存在将数据放入。

相反,通过使用Range.Row,我们获得要插入数据的下一行号。

票数 0
EN

Stack Overflow用户

发布于 2019-01-16 10:13:01

你离我太近了

代码语言:javascript
复制
Dim ctrl As Control
    Dim ws As Worksheet
    Set ws = Sheets("Splits")

erow = ws.Cells(Rows.Count, 1).End(x1Up).Offset(1, 0)
    ws.Cells(erow, 1) = OriginalTourCode.Text
    ws.Cells(erow, 2) = OriginalStartDate.Text
    ws.Cells(erow, 3) = OriginalEndDate.Text
    ws.Cells(erow, 4) = NewTourCode1.Text
    ws.Cells(erow, 5) = NewStartDate1.Text
    ws.Cells(erow, 6) = NewEndDate1.Text
    ws.Cells(erow, 7) = NewTourCode2.Text
    ws.Cells(erow, 8) = NewStartDate2.Text
    ws.Cells(erow, 9) = NewEndDate2.Text
    ws.Cells(erow, 10) = ReasonForSplit.Text


End Sub
票数 0
EN

Stack Overflow用户

发布于 2019-01-16 10:27:41

不需要对象变量

结束参数是xlUp而不是x1Up

数组版本

代码语言:javascript
复制
Option Explicit

Private Sub SplitTourCommand_Click()

    Const cSheet As String = "Splits"

    Dim erow As Long
    Dim vnt As Variant

    ReDim vnt(1 To 1, 1 To 10) As String

    vnt(1, 1) = OriginalTourCode.Text
    vnt(1, 2) = OriginalStartDate.Text
    vnt(1, 3) = OriginalEndDate.Text
    vnt(1, 4) = NewTourCode1.Text
    vnt(1, 5) = NewStartDate1.Text
    vnt(1, 6) = NewEndDate1.Text
    vnt(1, 7) = NewTourCode2.Text
    vnt(1, 8) = NewStartDate2.Text
    vnt(1, 9) = NewEndDate2.Text
    vnt(1, 10) = ReasonForSplit.Text

    With Worksheets(cSheet)
        erow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        .Cells(erow, 1).Resize(, 10) = vnt
    End With

End Sub

范围版本

代码语言:javascript
复制
Option Explicit

Private Sub SplitTourCommand_Click()

    Const cSheet As String = "Splits"

    Dim erow As Long

    With Worksheets(cSheet)
        erow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        .Cells(erow, 1) = OriginalTourCode.Text
        .Cells(erow, 2) = OriginalStartDate.Text
        .Cells(erow, 3) = OriginalEndDate.Text
        .Cells(erow, 4) = NewTourCode1.Text
        .Cells(erow, 5) = NewStartDate1.Text
        .Cells(erow, 6) = NewEndDate1.Text
        .Cells(erow, 7) = NewTourCode2.Text
        .Cells(erow, 8) = NewStartDate2.Text
        .Cells(erow, 9) = NewEndDate2.Text
        .Cells(erow, 10) = ReasonForSplit.Text
    End With

End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54214685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档