【问题标题】:checkbox macro to restrict editing复选框宏以限制编辑
【发布时间】:2017-02-05 22:46:35
【问题描述】:

下面的代码旨在仅允许授权人(网络名称“JSMITH”)勾选我的复选框,以便她确认她对发送的报告感到满意(多个报告用户,但只有一个授权人)。但我不断收到错误“需要对象”。我在下面的代码中做错了什么?谢谢

Private Sub CheckBox1_Click()

    If Environ("username") <> "JSMITH" Then
        CheckBox1.Value = False
    End If

End Sub

【问题讨论】:

  • 我在这里没有看到明显的问题。您可能应该使用 VBA 的调试器功能来查看它:excel-easy.com/vba/examples/debugging.html
  • 我的猜测是您不能将复选框值设置为 false。我会将它包装成一个 If 语句,例如如果 CheckBox1.Value = False 则
  • 我不明白你想要达到的最后一部分?因此,如果 JSMITH 是用户并且选中了复选框,应该会发生什么?

标签: excel debugging checkbox


【解决方案1】:

我认为你所追求的是以下代码:

Sub CheckBox1_Click()
    If ActiveSheet.Shapes("Check Box 1").ControlFormat.Value = 1 Then
        If Environ("username") = "JSMITH" or Environ("username") = "DTailor" Then
        'Do nothing
        Else
        'Uncheck because user not matching
        ActiveSheet.Shapes("Check Box 1").ControlFormat.Value = 0
        MsgBox ("You are not authorized to tick this box.")
        End If
    End If

End Sub

对于 ActiveX 复选框,我将使用以下代码:

Sub CheckBox1_Click()
    If ActiveSheet.OLEObjects("CheckBox1").Object.Enabled = True Then
        If Environ("username") = "JSMITH" or Environ("username") = "DTailor" Then
        'Do nothing
        Else
        'Uncheck because user not matching
        ActiveSheet.OLEObjects("CheckBox1").Object.Enabled = False
        MsgBox ("You are not authorized to tick this box.")
        End If
    End If

End Sub

【讨论】:

  • 您使用哪种复选框? form 还是 activeX?
  • 我很高兴 Elena,很高兴为您提供帮助。
  • 刚刚更新了代码。如果你喜欢,别忘了给我的答案打分:)
  • 问题左侧有一个绿色复选标记,答案旁边有一个箭头,您可以使用它来为您喜欢的答案投票。让我知道更新的代码是否有效:)
  • @elena 刚刚更新了代码。确保复选框的名称正确反映。顺便说一句,如果您需要有关非工作代码的紧急帮助,您可以在 Stack Overflow 上创建一个新帖子,通常会有人能够很快为您提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-30
  • 1970-01-01
  • 2017-07-20
  • 2015-03-17
  • 2018-03-21
  • 2017-04-01
相关资源
最近更新 更多