【问题标题】:Excel Userform/VBA Combine CheckBox & TextBox into a single cell stringExcel Userform/VBA 将 CheckBox 和 TextBox 组合成一个单元格字符串
【发布时间】:2018-04-14 07:07:20
【问题描述】:

关于我正在尝试做的事情的一些背景知识: 我的用户表单将用于对员工培训进行评分,并将结果添加到 Excel 电子表格中。我表格中的复选框代表了他们可能犯的不同类型的错误,理想情况下,每个错误都有一个数量框,如果选中该框,则可以指定每个错误发生的次数。我需要在一个单元格中,因为每一行是每个员工的 1 个测试。这是我的用户表单的示例: Mistakes Screen Shot

所有复选框和文本框共享相同的数字,我已经将它们编程为如果选中该框,则自动插入 1 个数量/如果未选中则为空。 (当然数量必须是可编辑的,以防重复错误类型。)

到目前为止,我能够使用带有字符串的循环来获取复选框,以使用以下代码将其标题放入单个单元格:

Dim CheckBox As Control
Dim Mistakes As String, delimiter As String

For Each CheckBox In Me.Frame_Mistakes.Controls
    If TypeOf CheckBox Is MSForms.CheckBox Then
        If (CheckBox.Value) Then
            Mistakes = Mistakes & delimiter & CheckBox.Caption
            delimiter = " | "
        End If
    End If
Next

With Sheet1
    .Cells(emptyRow, 4).Value = Mistakes
End With

但是,到目前为止,我一直无法弄清楚如何在分隔符之前的每个错误末尾添加数量。如果我可以让字符串采用这种格式,我会更喜欢它:Mistakes Format in Excel

如果我的意图不清楚,我深表歉意。我非常新,老实说我很惊讶我能做到这一点。请,谢谢!

【问题讨论】:

    标签: excel vba loops checkbox textbox


    【解决方案1】:

    所以,如果我理解正确,您希望读取错误单元格的输出

    [Caption of checked box](x[Number in Text Box])|[Caption of checked box](x[Number in Text Box])...
    

    如果是这样,您只需在“错误”变量的末尾添加一个 sn-p 代码,这样它就会显示为:

    Mistakes = Mistakes & delimiter & Checkbox.Caption & "(x" & TextBox.text & ")"
    

    困难在于您需要区分文本框,以便仅使用适用于相关复选框的文本框。您可以通过多种方式执行此操作,例如将文本框作为参数传递,或者使用 switch case 等等。

    另一个问题是确保文本框只使用数字。我实现这一点的方法是结合IsNumeric()Val() 函数。您首先检查该值是否为数字,然后使用 Val() 函数将其存储在 int 中。但是,由于您只需要一个字符串,因此单独使用 IsNumeric() 函数应该没问题。

    如果您需要更具体的说明,我需要确切地知道您在寻找什么。

    【讨论】:

    • 非常感谢您的回复!您提供的输出示例正是我正在寻找的。我添加了您提供的 sn-p,它给了我一个错误。我想这是因为文本框还没有区分。我将研究非数字并将文本框作为参数选项传递并尝试使其工作。不过,诚然,这就像在黑暗中开枪。衷心感谢您的指导,因为这是朝着正确方向迈出的一大步。
    猜你喜欢
    • 2017-11-30
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多