excel - 使用范围内的值更新用户表单

标签 excel vba userform

我目前有一张表,用于跟踪我大楼中的人员何时收到包裹到达的通知,以及有关该包裹的信息。我有一个显示用户表单的“发送提醒”按钮,用于查看工作表并确定哪些包裹已等待超过两天,然后在表单上为用户填写适当数据的几个字段(我还没有任何声誉,因此无法发布图片)。

第一个文本框是电子邮件,第二个是主题,第三个是消息。有一个 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")

希望这可以帮助;抱歉慢了! :)

原文:

我尝试编写您描述的代码以查看它的功能。

这就是我想出的;我希望这对您有所帮助!

我不确定您的代码有什么问题,因为这几乎是一回事,并且可以按预期工作:

enter image description here
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

enter image description here

关于excel - 使用范围内的值更新用户表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26344672/

相关文章:

c# - 如何正确清理 Excel 互操作对象?

vba - PasteSpecial 仅值

excel - 使用宏突出显示具有背景颜色的单元格

excel - 枚举 Excel 中指定的快捷方式

VBA - 在动态创建的文本框上捕获事件

excel - Excel 能否增加单元格 1 直到单元格 2 与单元格 3 匹配

vba - Excel VBA 上的代码崩溃

vba - 给数组赋值时出现类型不匹配错误

excel - 初始化时未填充用户窗体组合框

vba - 使用当前行的记录填充用户表单