Если в пользовательской форме установлен флажок, как изменить значение, отображаемое в ячейке? - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь написать код для пользовательской формы в VBA, который принимает ввод флажков и помещает значение на лист со значением «Да / Нет» вместо ИСТИНА / ЛОЖЬ. Предполагается, что эта пользовательская форма может запускаться несколько раз и добавлять новую строку в лист вместо того, чтобы просто каждый раз менять одно значение ячейки.

Я пытался создать строковую переменную, которая, если значение равно TRUEстрока будет "Да" и изменит значение cbProd.Value на "Да" вместо ИСТИНА. И аналогично для 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

Я ожидаю, что в ячейке будет вывод "Да", за исключением того, что он просто выходит пустым. Если я не изменю значение cbProd.Value на новое строковое значение, оно по крайней мере напечатает TRUE / FALSE. После изменения значения ничего не печатается.

1 Ответ

2 голосов
/ 07 ноября 2019

Вы не можете изменить значение флажка, отличное от логического, попробуйте изменить его свойство Tag, а затем прочитать его обратно в свой элемент InsertRow

т.е.

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

и затем прочитайте это как

.Cells(curRow, 6) = cbProd.Tag
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...