首页 > 解决方案 > 将数据从用户表单复制到工作表以获取多项数据

问题描述

我正在尝试将表单中捕获的数据移动到 excel 中。表单中有许多行,只有在输入数据时才应移动数据。

我有一个依赖于部门的表格填充该部门内任何员工的姓名值。可能有 2 个或 50 个,所以我设置了 50 个要填充的 txtname 框。根据名称框中的值,使用 vlookup 返回正确的参考编号。如果员工在该期间内有单位,则输入者将在 txtUnits 框中输入可变数量。

下面我用于表格第一行的代码将起作用,但不确定如何使其适用于所有 50 行而不复制代码 50 次并更改 txt 框号参考号等。

如果单位大于零,我需要移动每行的员工姓名、参考编号和单位,但还要移动部门和日期作为常数值

这是否可以简化。我一直在看循环,但不知道如何开始。

Dim ws As Worksheet
Dim Addto As Range
Set ws = Sheet2
Set Addto = ws.Range("c65356").End(xlUp).Offset(1, 0)

With ws

If txtUnits1 <> "" And txtName1.Value <> "" Then ' The txtUnits box are 
numbered 1 to 50
Set Addto = ws.Range("c65356").End(xlUp).Offset(1, 0)
If txtUnits1.Value > 0 Then Addto = txtName1.Value ' The txtName boxes 
are also numbered 1 to 50
If txtUnits1.Value > 0 Then Addto.Offset(0, 1).Value = cboDivision.Value
If txtUnits1.Value > 0 Then Addto.Offset(0, 2).Value = 
txtReference1.Value ' The txtReference boxes are alos numbered 1 to 50
If txtUnits1.Value > 0 Then Addto.Offset(0, 3).Value = 
txtDateWorked.Value
If txtUnits1.Value > 0 Then Addto.Offset(0, 4).Value = txtUnits1.Value
End With


Dim cControl As Control

For Each cControl In Me.Controls
If cControl.Name Like "txt*" Then cControl = ""
If cControl.Name Like "cbo*" Then cControl = vbNullString
Next

结束子

标签: vba

解决方案


如果文本框被正确命名为 txtName1to txtName50txtUnits1totxtUnits50txtReference1to txtReference50 then 可以尝试像这样的简单循环

Dim ws As Worksheet
Dim Addto As Range
Set ws = ThisWorkbook.Sheets("Sheet2")  'better to use sheet name instead of Codename
    For i = 1 To 4  ' 4 for test purpose only change to 50
        If Me.Controls("txtUnits" & i).Value <> "" And Me.Controls("txtUnits" & i).Value <> "" Then
        Set Addto = ws.Range("c65356").End(xlUp).Offset(1, 0)
        Addto.Value = Me.Controls("txtName" & i).Value '
        Addto.Offset(0, 1).Value = cboDivision.Value
        Addto.Offset(0, 2).Value = Me.Controls("txtReference" & i).Value
        Addto.Offset(0, 3).Value = txtDateWorked.Value
        Addto.Offset(0, 4).Value = Me.Controls("txtUnits" & i).Value
        End If
    Next

推荐阅读