首页 > 解决方案 > 将 Excel 用户表单数据发布到匹配条件的多行

问题描述

我在 Excel 中创建了一个带有复选框的用户表单,它将日期发布到数据库。日期发布在与放入用户表单的 ID(订单号)匹配的行中。

我使用“lastrow”的问题是它只发布到具有正确订单号的第一行,而我在 VBA 中非常有限的技能使我无法弄清楚我应该如何重新编写这段代码。

到目前为止,我设法将它放在一起,并且除了我的问题之外工作正常,它没有找到订单号的所有实例。

Private Sub CommandButton2_Click()
Dim LastRow As Long
Dim IDnum As String
Dim rngidnum As Range
Dim ws As Worksheet

Set ws = Worksheets("Data")
With ws
LastRow = .Cells(.Rows.Count, "AB").End(xlUp).Row
IDnum = TextBox1.Value
Set rngidnum = .Range("AB1:AB" & LastRow).Find(IDnum, .Range("AB" & LastRow))
End With
'Tjek om Ordrenummer findes
If rngidnum Is Nothing Then MsgBox "Order Number not found": Exit Sub

With rngidnum
If CheckBox1.Value = True Then
.Offset(0, 69).Value = Date
End If
If CheckBox2.Value = True Then
.Offset(0, 70).Value = Date
End If
If CheckBox3.Value = True Then
.Offset(0, 71).Value = Date
End If
If CheckBox4.Value = True Then
.Offset(0, 72).Value = Date
End If
If CheckBox5.Value = True Then
.Offset(0, 73).Value = Date
End If
If CheckBox6.Value = True Then
.Offset(0, 74).Value = Date
End If
If CheckBox7.Value = True Then
.Offset(0, 75).Value = Date
End If
End With

Unload UserForm1

End Sub
Private Sub CommandButton1_Click()
Unload UserForm1
End Sub


Private Sub Frame4_Click()

End Sub

Private Sub UserForm_Initialize()
TextBox1.Value = Sheets("Form").Range("C3").Value
End Sub

我希望有人可以帮助我弄清楚代码如何找到并将日期发布到所有相应的行。

提前致谢!

标签: excelvba

解决方案


您可以遍历复选框。

For n = 1 To 7
   If Me.Controls("Checkbox" & n).Value = True Then
       rngidnum.Offset(0, n + 68).Value = Date
   End If
Next

推荐阅读