【问题标题】:Userform checkbox questions用户表单复选框问题
【发布时间】:2020-01-17 09:06:43
【问题描述】:

所以我使用了建议的编码,但它不起作用。因此,我对其进行了编辑和澄清,希望也许我的文档真的很挑剔,但这也不起作用。我对该部分的整个代码如下。谁能帮我理解为什么这不起作用?

下面的行首先将文本框字段移动到我的数据库,然后我的数据库进行一些计算。这些计算返回“T”或“F”。然后我的用户表单检索该信息,如果字段为“T”,则在用户表单中实时检查复选框。我试图让我的编码禁用没有“T”且未选中的复选框,因此无法在用户表单中标记它。但是,我确实需要用户能够从后面带有“T”并被选中的复选框中删除复选标记。

我的代码如下,它没有禁用未选中且后面没有“T”的复选框。

' When time is entered, time transfers immediately to spreadsheet datafield and sends back to userform which meals are allowed.

Dim TargetRow As Integer
TargetRow = Sheets("Codes").Range("D43").Value + 1

With Sheets("Travel Expense Voucher").Range("Data_Start").Offset(TargetRow, 26)
 .Value = TimeValue(txtArrivalTime)
 .NumberFormat = "hh:mm" 'arrival time
End With

'''MEALS ALLOWED PER SPREADSHEET TO USERFORM'''
With Me.chkMorning
    If Sheets("Travel Expense Voucher").Range("Data_Start").Offset(TargetRow, 28).Value = "T" Then
        .Value = Checked
    Else
        .Value = Unchecked
        .Enabled = False
    End If
End With

With Me.chkMidday
    If Sheets("Travel Expense Voucher").Range("Data_Start").Offset(TargetRow, 30).Value = "T" Then
        .Value = Checked
    Else
        .Value = Unchecked
        .Enabled = False
    End If
End With

With Me.chkEvening
    If Sheets("Travel Expense Voucher").Range("Data_Start").Offset(TargetRow, 32).Value = "T" Then
        .Value = Checked
    Else
        .Value = Unchecked
        .Enabled = False
    End If
End With```

【问题讨论】:

  • 使用复选框的事件,如果它们被选中则继续,如果没有则取消操作。

标签: excel vba checkbox userform


【解决方案1】:

禁用用户没有资格使用的复选框:

If Sheets("Travel Expense Voucher").Range("Data_Start").Offset(TargetRow, 28).Value = "T" Then
    frmUserTravel.chkMorning = Checked
Else
    frmUserTravel.chkMorning = Unchecked
    frmUserTravel.chkMorning.Enabled = False
End If
If Sheets("Travel Expense Voucher").Range("Data_Start").Offset(TargetRow, 30).Value = "T" Then
    frmUserTravel.chkMidday = Checked

Else
    frmUserTravel.chkMidday = Unchecked
    frmUserTravel.chkMidday.Enabled = False
End If

If Sheets("Travel Expense Voucher").Range("Data_Start").Offset(TargetRow, 32).Value = "T" Then
    frmUserTravel.chkEvening = Checked
Else
    frmUserTravel.chkEvening = Unchecked
    frmUserTravel.chkEvening.Enabled = False
End If

【讨论】:

  • 这将允许他们取消选中复选框但不允许他们选中未选中的框?大声笑那是一口。 :) 这有意义吗?
  • 它将取消选中这些框并阻止他们对它们做任何事情(不完全相同)。允许他们更改的框可以随意选中和取消选中(这比只是允许取消选中它们更加用户友好)
  • 哦,所以你是说如果他们没有被选中,他们不能做任何事情,但是如果他们被选中,他们可以离开或者取消选中它们。对吗?
  • 如果条件不适用,则复选框将被取消选中并禁用,从而阻止用户更改它们。如果条件确实适用,则默认情况下会选中该复选框,并且可以随意更改。最好你试试代码
  • 会做的,非常感谢您的帮助。 :) 如果我有任何其他问题,我会在这里告诉你!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-08
  • 2014-03-22
  • 1970-01-01
  • 2017-08-16
  • 1970-01-01
  • 1970-01-01
  • 2011-08-09
相关资源
最近更新 更多