如果在用户窗体上选中了复选框,如何更改单元格中显示的值?

If a checkbox is checked on a userform, how do I change the value shown in a cell?

我正在尝试为 VBA 中的用户窗体编写代码,该代码接受复选框的输入并将值推送到值为 "Yes/No" 而不是 TRUE/FALSE 的工作表。此用户表单旨在能够 运行 多次并添加到工作表中的新行,而不是每次只更改一个单元格值。

我尝试创建一个字符串变量,如果值为 TRUE,则字符串将为 "Yes",并将 cbProd.Value 更改为 "Yes" 而不是 TRUE。对于 FALSE 也是如此。不知道是我做错了,还是我处理的不对。

Private Sub cbProd_Click()

    Dim cbProdcut As String

    If cbProd.Value = True Then
       cbProduct = "Yes"
       cbProd.Value = cbProduct
    Else
       cbProduct = "No"
       cbProd.Value = cbProduct
    End If

End Sub

Private Sub InsertRow()

    With Sheet1

        ' Get the current row
        Dim i As Long
        Dim curRow As Long

        If .Range("A4") = "" Then
            curRow = 4
        Else
            curRow = .Range("A" & .Rows.Count).End(xlUp).Row + 1
        End If

        ' Add item to row
        .Cells(curRow, 6) = cbProd.Value

    End With

End Sub

我希望单元格中的输出为 "Yes",只是输出为空白。如果我不将 cbProd.Value 更改为新的字符串值,它至少会打印 TRUE/FALSE。更改值后它不打印任何内容。

您不能将复选框值更改为布尔值以外的值,请尝试更改它的标签 属性 然后在您的 InsertRow 子

中读回

If cbProd.Value = True Then cbProd.Tag = "Yes" Else cbProd.Tag = "No"

然后像这样阅读

.Cells(curRow, 6) = cbProd.Tag