我目前有一张表,用于跟踪我大楼中的人员何时收到包裹到达的通知,以及有关该包裹的信息。我有一个显示用户表单的“发送提醒”按钮,用于查看工作表并确定哪些包裹已等待超过两天,然后在表单上为用户填写适当数据的几个字段(我还没有任何声誉,因此无法发布图片)。
第一个文本框是电子邮件,第二个是主题,第三个是消息。有一个 Next 按钮只会导致表单再次初始化,所以我希望它只会查找下一个一直在等待的包,如果没有找到,则表单关闭。
问题是当我单击按钮显示表单时,电子邮件框和消息框都显示为空白,尽管主题框很好。
Private Sub UserForm_Initialize()
Dim checkRange As Range
Dim rCell As Range
Dim k As Integer
On Error Resume Next
k = 0
Sheets(1).Activate
checkRange = ActiveSheet.Range("D3", "D100")
For Each rCell In checkRange.Cells
If rCell.Value >= 2 Then
Email.Value = Cells(rCell.Row, 1).Value
Subject.Value = "Package Reminder"
Message.Value = "This is a reminder that you have a package from " & _
Cells(rCell.Row, 2).Value & _
" waiting for you in the machine shop."
k = 1
Cells(rCell.Row, 3).Value = Date
Exit For
End If
Next rCell
If k = 0 Then
Unload Me
MsgBox ("All reminders sent!")
End If
End Sub
最佳答案
编辑:
我一定是瞎子;我没有意识到这行代码在做什么!
checkRange = ActiveSheet.Range("D3", "D100")
这应该是:
checkRange = ActiveSheet.Range("D3:D100")
希望这可以帮助;抱歉慢了! :)
原文:
我尝试编写您描述的代码以查看它的功能。
这就是我想出的;我希望这对您有所帮助!
我不确定您的代码有什么问题,因为这几乎是一回事,并且可以按预期工作:
Private Sub UserForm_Initialize()
Dim rCell
Dim foundPackage
foundPackage = False
For Each rCell In Sheets("Sheet1").Range("D2:D12")
If rCell.Value >= 2 And Sheets("Sheet1").Cells(rCell.Row, 3).Value = "" Then 'Added AND so it goes to the next one after a date is set
Email.Value = Sheets("Sheet1").Cells(rCell.Row, 1).Value
Subject.Value = "Package Reminder"
Message.Value = "This is a reminder that you have a package from " & _
Sheets("Sheet1").Cells(rCell.Row, 2).Value & " waiting in the machine shop."
Sheets("Sheet1").Cells(rCell.Row, 3).Value = Date 'This will set the date on the cell - I believe this is as intended
foundPackage = True
Exit For
End If
Next rCell
If foundPackage = False Then
Unload Me
MsgBox ("All reminders sent!")
End If
End Sub
关于excel - 使用范围内的值更新用户表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26344672/