Excel Userform / VBA组合CheckBox&将TextBox转换为单个单元格字符串

时间:2017-11-01 21:14:10

标签: excel vba loops checkbox textbox

关于我正在尝试做的事情的一些背景知识: 我的用户表单将用于对员工培训进行评级,并将结果添加到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

如果我的意图不清楚,我道歉。我非常新,老实说惊讶我能够做到这一点。拜托,谢谢!

1 个答案:

答案 0 :(得分:0)

因此,如果我理解正确,您需要读取错误单元格的输出

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

如果是这样,您只需要在错误结束时添加一段代码即可。变量,使其显示为:

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

如果事情变得困难,您需要区分文本框,以便仅使用适用于相关复选框的文本框。您可以通过多种方式执行此操作,例如将Textbox作为参数传递,或者使用switch case来命名一些。

另一个问题是确保文本框仅使用数字。我完成此任务的方法是使用IsNumeric()Val()函数的组合。首先检查值是否为数值,然后使用Val()函数将其存储在int中。因为你只需要一个字符串,所以单独使用IsNumeric()函数应该没问题。

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