Ребят, нужна помощь, я не знаю как исправить, при заполнении простой формы скрин я приложил
вбиваю поля стоиомсть часа и количество часов а в поле общая сумма ничего не происходит, только когда вбиваю чаевые она считает, но суть в том что чаевых может и не быть, как сделать так что бы
при вбитии 2х полей считалось произведение, а если есть чай то суммировалось к произведению посчитанному заранее
Ребят, нужна помощь, я не знаю как исправить, при заполнении простой формы скрин я приложил
вбиваю поля стоиомсть часа и количество часов а в поле общая сумма ничего не происходит, только когда вбиваю чаевые она считает, но суть в том что чаевых может и не быть, как сделать так что бы
при вбитии 2х полей считалось произведение, а если есть чай то суммировалось к произведению посчитанному заранееGopronotmore
Private Sub TextBox3_Change() If TextBox3.Value = "" Then MsgBox "Введите данные в поле Стоимость часа", vbCritical Exit Sub If VBA.IsNumeric(TextBox3.Value) = False Then MsgBox "Введите верные данные в поле Стоимость часа", vbCritical TextBox3.Value = "" Exit Sub End If End If If TextBox3.Value <> "" And TextBox4.Value <> "" Then TextBox6 = TextBox3.Value * TextBox4.Value + IIf(TextBox5.Value = "", 0, TextBox5.Value) End Sub
Private Sub TextBox4_Change() If TextBox4.Value = "" Then MsgBox "Введите верные данные в поле Количество часов", vbCritical Exit Sub If VBA.IsNumeric(TextBox4.Value) = False Then MsgBox "Введите верные данные в поле Количество часов", vbCritical TextBox4.Value = "" Exit Sub End If End If If TextBox3.Value <> "" And TextBox4.Value Then TextBox6 = TextBox3.Value * TextBox4.Value + IIf(TextBox5.Value = "", 0, TextBox5.Value) End Sub
Private Sub TextBox5_Change() If TextBox5.Value = "" Then Exit Sub If VBA.IsNumeric(TextBox5.Value) = False Then MsgBox "Введите верные данные в поле Размер чаевых", vbCritical TextBox5.Value = "" Exit Sub End If If TextBox3 <> "" And TextBox4 <> "" Then TextBox6 = TextBox3.Value * TextBox4.Value + TextBox5.Value End Sub
[/vba]
Попробуйте так:
[vba]
Код
Private Sub TextBox3_Change() If TextBox3.Value = "" Then MsgBox "Введите данные в поле Стоимость часа", vbCritical Exit Sub If VBA.IsNumeric(TextBox3.Value) = False Then MsgBox "Введите верные данные в поле Стоимость часа", vbCritical TextBox3.Value = "" Exit Sub End If End If If TextBox3.Value <> "" And TextBox4.Value <> "" Then TextBox6 = TextBox3.Value * TextBox4.Value + IIf(TextBox5.Value = "", 0, TextBox5.Value) End Sub
Private Sub TextBox4_Change() If TextBox4.Value = "" Then MsgBox "Введите верные данные в поле Количество часов", vbCritical Exit Sub If VBA.IsNumeric(TextBox4.Value) = False Then MsgBox "Введите верные данные в поле Количество часов", vbCritical TextBox4.Value = "" Exit Sub End If End If If TextBox3.Value <> "" And TextBox4.Value Then TextBox6 = TextBox3.Value * TextBox4.Value + IIf(TextBox5.Value = "", 0, TextBox5.Value) End Sub
Private Sub TextBox5_Change() If TextBox5.Value = "" Then Exit Sub If VBA.IsNumeric(TextBox5.Value) = False Then MsgBox "Введите верные данные в поле Размер чаевых", vbCritical TextBox5.Value = "" Exit Sub End If If TextBox3 <> "" And TextBox4 <> "" Then TextBox6 = TextBox3.Value * TextBox4.Value + TextBox5.Value End Sub
Я доработал форму, добавил еще 1 textbox, теперь если в конце вбивать первые два поля нормально считает. А вот если удалить данные в поле стоимость данные остаются и не очищаются,
И теперь не понимаю как сделать так, что если у меня нету чая то значение стоимости = значению итога, а если чай есть то получается суммируются 2 значения.
И если удалять значения то неактивные поля остаются с предыдущими значениями, что я делаю не так?
Я доработал форму, добавил еще 1 textbox, теперь если в конце вбивать первые два поля нормально считает. А вот если удалить данные в поле стоимость данные остаются и не очищаются,
И теперь не понимаю как сделать так, что если у меня нету чая то значение стоимости = значению итога, а если чай есть то получается суммируются 2 значения.
И если удалять значения то неактивные поля остаются с предыдущими значениями, что я делаю не так?Gopronotmore
MsgBox "Введите данные в поле Стоимость часа", vbCritical
заменил бы его на [vba]
Код
TextBox6 = ""
[/vba] Примерно так
[vba]
Код
Private Sub TextBox3_Change() If TextBox3.Value = "" Then TextBox6 = "" Exit Sub If VBA.IsNumeric(TextBox3.Value) = False Then MsgBox "Введите верные данные в поле Стоимость часа", vbCritical TextBox3.Value = "" Exit Sub End If End If If TextBox3.Value <> "" And TextBox4.Value <> "" Then TextBox6 = TextBox3.Value * TextBox4.Value + IIf(TextBox5.Value = "", 0, TextBox5.Value) End Sub
Private Sub TextBox4_Change() If TextBox4.Value = "" Then TextBox6 = "" Exit Sub If VBA.IsNumeric(TextBox4.Value) = False Then MsgBox "Введите верные данные в поле Количество часов", vbCritical TextBox4.Value = "" Exit Sub End If End If If TextBox3.Value <> "" And TextBox4.Value Then TextBox6 = TextBox3.Value * TextBox4.Value + IIf(TextBox5.Value = "", 0, TextBox5.Value) End Sub
[/vba]
Я бы на Вашем месте ещё избавился от этого сообщения
MsgBox "Введите данные в поле Стоимость часа", vbCritical
заменил бы его на [vba]
Код
TextBox6 = ""
[/vba] Примерно так
[vba]
Код
Private Sub TextBox3_Change() If TextBox3.Value = "" Then TextBox6 = "" Exit Sub If VBA.IsNumeric(TextBox3.Value) = False Then MsgBox "Введите верные данные в поле Стоимость часа", vbCritical TextBox3.Value = "" Exit Sub End If End If If TextBox3.Value <> "" And TextBox4.Value <> "" Then TextBox6 = TextBox3.Value * TextBox4.Value + IIf(TextBox5.Value = "", 0, TextBox5.Value) End Sub
Private Sub TextBox4_Change() If TextBox4.Value = "" Then TextBox6 = "" Exit Sub If VBA.IsNumeric(TextBox4.Value) = False Then MsgBox "Введите верные данные в поле Количество часов", vbCritical TextBox4.Value = "" Exit Sub End If End If If TextBox3.Value <> "" And TextBox4.Value Then TextBox6 = TextBox3.Value * TextBox4.Value + IIf(TextBox5.Value = "", 0, TextBox5.Value) End Sub
В общем я дописал все условия, не могу только конвертировать значения переменных из текстовых в числовые вот тут
[vba]
Код
If VBA.IsNumeric(TextBox3.Value) = False And TextBox3.Value <> "" Then MsgBox "Ââåäèòå âåðíûå äàííûå â ïîëå Ñòîèìîñòü ÷àñà", vbCritical TextBox3.Value = "" Exit Sub ElseIf VBA.IsNumeric(TextBox4.Value) = False And TextBox4.Value <> "" Then TextBox4.Value = "" Exit Sub ElseIf VBA.IsNumeric(TextBox5.Value) = False And TextBox5.Value <> "" Then TextBox5.Value = "" Exit Sub End If
If TextBox5.Value <> "" Then TextBox10.Value = TextBox5.Value + TextBox6.Value ElseIf TextBox3.Value <> "" And TextBox4.Value <> "" Then TextBox6.Value = TextBox3.Value * TextBox4.Value TextBox10.Value = TextBox3.Value * TextBox4.Value ElseIf TextBox3.Value = "" Or TextBox4.Value = "" Then TextBox6.Value = "" TextBox10.Value = ""
End If
[/vba]
Вот в этой строчке он складывает их как 2 текстовых значения получается 500 + 500 = 500500
[vba]
Код
TextBox10.Value = TextBox6.Value + TextBox5.Value
[/vba]
Помогите пожалуйста
В общем я дописал все условия, не могу только конвертировать значения переменных из текстовых в числовые вот тут
[vba]
Код
If VBA.IsNumeric(TextBox3.Value) = False And TextBox3.Value <> "" Then MsgBox "Ââåäèòå âåðíûå äàííûå â ïîëå Ñòîèìîñòü ÷àñà", vbCritical TextBox3.Value = "" Exit Sub ElseIf VBA.IsNumeric(TextBox4.Value) = False And TextBox4.Value <> "" Then TextBox4.Value = "" Exit Sub ElseIf VBA.IsNumeric(TextBox5.Value) = False And TextBox5.Value <> "" Then TextBox5.Value = "" Exit Sub End If
If TextBox5.Value <> "" Then TextBox10.Value = TextBox5.Value + TextBox6.Value ElseIf TextBox3.Value <> "" And TextBox4.Value <> "" Then TextBox6.Value = TextBox3.Value * TextBox4.Value TextBox10.Value = TextBox3.Value * TextBox4.Value ElseIf TextBox3.Value = "" Or TextBox4.Value = "" Then TextBox6.Value = "" TextBox10.Value = ""
End If
[/vba]
Вот в этой строчке он складывает их как 2 текстовых значения получается 500 + 500 = 500500
Private Sub TextBox3_Change() If TextBox3.Value = "" Then TextBox6.Value = "": Exit Sub If VBA.IsNumeric(TextBox3.Value) = False Then MsgBox "Введите верные данные в поле Стоимость часа", vbCritical TextBox3.Value = "" Exit Sub End If If TextBox3.Value <> "" And TextBox4.Value <> "" Then TextBox6.Value = CDbl(TextBox3.Value) * CDbl(TextBox4.Value) End Sub
Private Sub TextBox4_Change() If TextBox4.Value = "" Then TextBox6.Value = "": Exit Sub If VBA.IsNumeric(TextBox4.Value) = False Then MsgBox "Введите верные данные в поле Количество часов", vbCritical TextBox4.Value = "" Exit Sub End If If TextBox3.Value <> "" And TextBox4.Value <> "" Then TextBox6.Value = CDbl(TextBox3.Value) * CDbl(TextBox4.Value) End Sub
Private Sub TextBox5_Change() If TextBox5.Value = "" Then TextBox10.Value = TextBox6.Value: Exit Sub If VBA.IsNumeric(TextBox5.Value) = False Then MsgBox "Введите верные данные в поле Размер чаевых", vbCritical TextBox5.Value = "" Exit Sub End If If TextBox5.Value <> "" And TextBox6.Value <> "" Then TextBox10.Value = CDbl(TextBox6.Value) + CDbl(TextBox5.Value) Else TextBox10.Value = TextBox6.Value End If End Sub
Private Sub TextBox6_Change() If TextBox6.Value = "" Then TextBox10.Value = TextBox6.Value: Exit Sub Else TextBox10.Value = Val(TextBox6.Value) + Val(IIf(TextBox5.Value = "", 0, TextBox5.Value)) End If End Sub
[/vba]
Попробуйте так:
[vba]
Код
Private Sub TextBox3_Change() If TextBox3.Value = "" Then TextBox6.Value = "": Exit Sub If VBA.IsNumeric(TextBox3.Value) = False Then MsgBox "Введите верные данные в поле Стоимость часа", vbCritical TextBox3.Value = "" Exit Sub End If If TextBox3.Value <> "" And TextBox4.Value <> "" Then TextBox6.Value = CDbl(TextBox3.Value) * CDbl(TextBox4.Value) End Sub
Private Sub TextBox4_Change() If TextBox4.Value = "" Then TextBox6.Value = "": Exit Sub If VBA.IsNumeric(TextBox4.Value) = False Then MsgBox "Введите верные данные в поле Количество часов", vbCritical TextBox4.Value = "" Exit Sub End If If TextBox3.Value <> "" And TextBox4.Value <> "" Then TextBox6.Value = CDbl(TextBox3.Value) * CDbl(TextBox4.Value) End Sub
Private Sub TextBox5_Change() If TextBox5.Value = "" Then TextBox10.Value = TextBox6.Value: Exit Sub If VBA.IsNumeric(TextBox5.Value) = False Then MsgBox "Введите верные данные в поле Размер чаевых", vbCritical TextBox5.Value = "" Exit Sub End If If TextBox5.Value <> "" And TextBox6.Value <> "" Then TextBox10.Value = CDbl(TextBox6.Value) + CDbl(TextBox5.Value) Else TextBox10.Value = TextBox6.Value End If End Sub
Private Sub TextBox6_Change() If TextBox6.Value = "" Then TextBox10.Value = TextBox6.Value: Exit Sub Else TextBox10.Value = Val(TextBox6.Value) + Val(IIf(TextBox5.Value = "", 0, TextBox5.Value)) End If End Sub