【问题标题】:Deleting cell value if "Quit" button selected如果选择“退出”按钮,则删除单元格值
【发布时间】:2019-08-17 20:34:33
【问题描述】:

如果用户的详细信息正确,我有 1 个名为“LoginForm”的登录用户表单和 3 个额外的用户表单“AMForm”、“FMForm”和“HRMForm”。有 3 个电子表格“AMChoices”、“FMChoices”和“HRMChoices”,其中 3 个附加用户表单的内容被记录到相关电子表格中,即 FMForm 到 FMChoices。 要指定用户,如果他们的凭据被接受,他们的 UserID 会出现在相关的电子表格中。例如,如果是用户表单“AMForm”,则将其用户 ID 输入到“AMchoices”中 B 列的下一个可用单元格中(从 B3 开始)。由于有多个用户登录,它进入下一个空行。

我的代码完美运行。但是,在每个用户窗体“AMForm”、“FMForm”和“HRMForm”上都有一个“退出”按钮。所以我希望它删除最近输入的 UserID。

我该如何编码?我已经输入了用于从 LoginForm 将 UserID 输入电子表格的代码。请告诉我:)

Private Sub btnAMLogout_Click()
    If MsgBox("Are you sure you want to quit? Press Yes to proceed and No to cancel.", vbYesNo) = vbYes Then
        Unload Me
    End If
End Sub

If aCell.Offset(, 4) = "SBUB10" Then
    AMForm.Show
    With Worksheets("AMChoices")
    LastRow = .Range("B" & .Rows.CountLarge).End(xlUp).Row + 1
    If LastRow < 3 Then LastRow = 3
    .Cells(LastRow, "b") = WorksheetFunction.Proper(ID)
End With

【问题讨论】:

  • 您来对地方了,只需添加一些代码,请努力。也许这里有一些柔软的心会为你写它,但这是非常不公平的,而且完全不专业,不是吗?如果我误解了你的写作,我深表歉意。
  • 嗨 Gene,如果遇到这种情况,我很抱歉 - 我的 VBA 技能非常有限,特别是对于这个查询,我什至不确定从哪里开始。任何指导将不胜感激

标签: excel vba


【解决方案1】:

您显示的代码的 sn-p 将 ID 写入工作表。要删除它,您需要找到它并清空它所在的单元格。此操作可以在Unload Me 调用之前或之后执行。您的代码需要一些修改:

Private Sub btnAMLogout_Click()
    If MsgBox("Are you sure ...", vbYesNo) = vbYes Then
        Unload Me
' Let's say the new code goes here. The last ID (whichever it is) will be removed.
        With Worksheets("AMChoices")
            LastRow = .Range("B" & .Rows.CountLarge).End(xlUp).Row ' no need for:  + 1
            If LastRow < 3 Then Exit Sub ' no need for:  LastRow = 3    
            .Cells(LastRow, "b") = "" ' no need for:  WorksheetFunction.Proper(ID)
        End With
    End If
End Sub

现在,由于您提到了多个用户,因此可能会有点复杂,因为您需要找到具有相关 ID 的单元格(它可能不是最后一个!),然后将其删除。 “删除”可能只是清空单元格(如上)或删除该单元格的整行,或者其他什么——我不太了解你的情况,无法说出它是什么。

无论如何,要在“B:B”列中查找该 ID 的最后一次出现,您需要测试该列中的单元格是否具有该 ID,从最后一个单元格开始向上,一次一个单元格,像

For i = LastRow to 3 Step -1 
    If .Cells(i, "B") = WorksheetFunction.Proper(ID) Then
        .Rows(i).Delete
        Exit For
    End If
Next

我当然希望这会有所帮助。

【讨论】:

  • 嗨,吉恩,这太棒了。我真的很感谢你的帮助和你写这篇文章的时间。非常感谢你有美好的一天:)
猜你喜欢
  • 1970-01-01
  • 2014-04-20
  • 2013-08-13
  • 2017-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-24
相关资源
最近更新 更多