【问题标题】:Excel User Form, Locate Cell and Insert DateExcel 用户表单、定位单元格并插入日期
【发布时间】:2017-05-08 14:49:56
【问题描述】:

我有一个用户表单,我想使用它来根据用户表单上输入的内容定位特定单元格。找到单元格后,我需要将日期插入到与上述需要定位的单元格位于同一行(不同列)的相应单元格中。

这是我的代码,但它似乎没有找到任何特定的单元格,而是只是在 E 列中插入一个日期,似乎是随机行。

Private Sub InsertRecordButton_Click()
Dim Found As Range
If Me.CloseDate.Value = "" Then
    MsgBox "No Date is set", , "Missing Entry"
Else
    Set Found = 
Sheets("Colonies").Range("E:E").Find(What:=Me.Colonyid.Value, _
                                                   LookIn:=xlValues, _
                                                   LookAt:=xlWhole, _
                                                   SearchOrder:=xlByRows, _
                                                   SearchDirection:=xlNext,_
                                                   MatchCase:=True)
    If Found Is Nothing Then
        MsgBox "No match for " & Me.Colonyid.Value, , "No Match Found"
    Else
        Found.Offset(3).Value = Me.CloseDate.Value
    End If

根据代码,我试图找到在 Colonyid.Value 中的用户窗体上输入的内容。在工作簿中找到后,我需要在与 Colonyid.Value 位于同一行的 E 列中输入 CloseDate.Value(自动填充今天的日期)。

我可以使用通用示例,但如果可能的话,我更喜欢使用我的代码作为起点。

【问题讨论】:

    标签: excel vba search userform


    【解决方案1】:

    这对我有用

    Private Sub CommandButton1_Click()
        Dim this As String
    
        Dim rng As Range
        Dim rcell As Range
    
        If ISnUll(Me.TextBox1.Value) = False Then
             this = Me.TextBox1.Value
        ElseIf ISnUll(Me.TextBox1.Value) = true Then
             MsgBox "Input is required for operation. Please enter a value"
             Exit Sub
        End if
    
        Set rng = ThisWorkbook.Sheets("Sheet2").Range("E:E")
        For Each rcell In rng.Cells
        If rcell.Value <> vbNullString Then
            If rcell.Value = this Then
                rcell.Offset(0, 4).Value = Now()
            End If
        End If
        Next rcell
    End Sub
    

    【讨论】:

    • 感谢您的贡献。当我使用自己的文本框控件(而不是 TextBox1)插入您的代码时遇到错误。我收到错误:“无效使用 Null”并突出显示:this = Me.Colonyid.Value
    • 只需将其包装在 IsNull 函数中。像 IF IsNull(Me.TextBox1.Value) = False 那么....
    • 好建议。也许虽然我在上下文中需要这个:this = IsNull(Me.Colonyid.Value) = False 在消除空错误方面是可以接受的,但If 适合哪里?我收到编译错误。
    • @JaredBownds 检查我的编辑。这实际上是一个有价值的教训,应该始终考虑错误处理以及数据验证。
    • 有道理,并且同意,我正在构建我的最佳实践工具箱。有趣的事实是,在运行编辑后的代码时,我收到了 MsgBox 反馈,尽管我在 UserForm 的 Colonyid 字段中“选择”或输入了一些内容。我应该提一下,这个 Colonyid 是一个组合框,填充如下:Private Sub UserForm_Initialize() Colonyid.List = Worksheets("Colonies").Range("B2:B500").Value 所以你可以看到它是一个可以选择的值列表。我很好奇需要更改哪些内容才能使用组合框。
    猜你喜欢
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多