vba - 将数据从用户表单复制到工作表以获取多项数据
问题描述
我正在尝试将表单中捕获的数据移动到 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
结束子
解决方案
如果文本框被正确命名为 txtName1
to txtName50
, txtUnits1
totxtUnits50
和txtReference1
to 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
推荐阅读
- css - Xamarin 使用垂直集合视图形成 x 轴溢出
- javascript - 当 JS 移动到外部文件时,我的任何控件使用的 JS 函数都无法正常工作
- javascript - 为什么 window.onpopstate 使用 history.go 被调用两次?
- javascript - 如何删除字符串中的所有数字和所有标点符号?
- python - 在 Window 的 Linux 子系统中运行 python 时出现内存错误
- agents-jade - 使用主类初始化的两个代理之间的通信
- php - 如何通过 CodeIgniter 和 Ajax 将 MySQL 表数据提取到数据表中不起作用
- jenkins - 'sh: sh: command not found' 在多分支管道中使用 withCredentials 块时
- javascript - webdriverio 5 用于单元测试和功能测试
- android - 错误选项“--entry-file”丢失。使用 --verbose 标志运行 CLI 以获取更多详细信息