Excel VBA Преобразование положительных значений текстового поля в отрицательные на основе выбора кнопки опций - PullRequest
0 голосов
/ 23 декабря 2019

В настоящее время я работаю над пользовательской формой xcel с текстовым полем, в котором пользователь будет вводить сумму в долларах, которая была либо получена, либо выдана. Это число затем помещается в ячейку электронной таблицы после выбора кнопки команды. У меня есть две радиокнопки: одна за деньги, а другая за деньги. Я бы хотел, чтобы пользователь просто вводил положительное значение в поле, и когда данная кнопка выбрана, она превращается в отрицательную. когда полученная кнопка выбрана, она оставит поле как положительное. Обычно я бы умножил что-то на -1, чтобы превратить это в отрицательное, но я попытался userform.textbox.value = userform.textbox.value * -1, и это не работает. Любая помощь, которая может быть предложена по этому вопросу, будет принята с благодарностью.

Private Sub InsTxtBox_AfterUpdate()

 GameLogUF.InsTxtBox = Format(GameLogUF.InsTxtBox, "$#,###")

        If GameLogUF.InsPlyrOptnBtn.Value = True Then
            GameLogUF.InsTxtBox.Value = GameLogUF.InsTxtBox.Value * -1
        End If


End Sub

1 Ответ

0 голосов
/ 23 декабря 2019

Прежде всего, проверьте, если вы инициируете событие. Поместите точку останова в эту подпрограмму и попробуйте изменить значение.

Событие AfterUpdate запускается при обновлении элемента управления или записи. Внутри записи измененные данные в каждом элементе управления обновляются, когда элемент управления теряет фокус или когда пользователь нажимает Enter или Tab .

Просто проверил код и егоработает, если событие было запущено.

Также я предлагаю немного его изменить.

Dim value As Double
Dim tryValue As String
'remove $ sign so String value could be converted to Number format
tryValue = Replace(GameLogUF.InsTxtBox.value, "$", "")

'if user input is not numeric after removing $ sign - input incorrect
If Not IsNumeric(tryValue) Then
    'do sth else
    Exit Sub
End If
value = tryValue

' "= True" part is not needed there is no need to compare boolean property '
If GameLogUF.InsPlyrOptnBtn.value Then
    'if user input is negative your code will turn it back to positive, with Abs it always will be negative in this case'
    value = Abs(value) * -1
End If
'do formatting in the end'
GameLogUF.InsTxtBox.value = Format(value, "$#,###")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...