powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / автоматическое обновление TextBox
14 сообщений из 14, страница 1 из 1
автоматическое обновление TextBox
    #34416741
nikalex2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди помогите новичку

Суть задачи такова, пример

Имеются TextBox1, TextBox2, TextBox3, TextBox4 в которые вводим данные

также TextBox5, TextBox6, TextBox7, TextBox8 в которых получаем результат

к примеру
TextBox5 = TextBox1 * TextBox2
TextBox6 = TextBox2 * TextBox3
TextBox7 = TextBox3 * TextBox4
TextBox8 = TextBox4 * TextBox5

так вот когда ввожу данные последовательно, то расчеты выполняются как и положено
но к примеру нада поменять данные в каком нибудь TextBox
то расчет в других зависимых TextBox не обновляется автоматически

что делать???
...
Рейтинг: 0 / 0
автоматическое обновление TextBox
    #34416847
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TextBox_Change вам поможет

аффтопитезь: объект либо именован, либо не существует
...
Рейтинг: 0 / 0
автоматическое обновление TextBox
    #34416962
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
также можно
LostFocus
Validate ( + проверка правильности)
...
Рейтинг: 0 / 0
автоматическое обновление TextBox
    #34417609
nikalex2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я вроде так и делаю TextBox_Change()
но почему то не обновляется автоматом
...
Рейтинг: 0 / 0
автоматическое обновление TextBox
    #34417690
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikalex2я вроде так и делаю TextBox_Change()
но почему то не обновляется автоматом

код в студию!
...
Рейтинг: 0 / 0
автоматическое обновление TextBox
    #34417705
nikalex2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
Private Sub B_Change()
       Scet
End Sub

Private Sub H_Change()
       Scet
End Sub

Private Sub Kd_Change()
       Scet
End Sub

Private Sub Scet()
    If IsNumeric(B.Text) = True And Not Val(H.Text) =  0  And Not Val(Kd.Text) =  0  Then
        If OptionButton1.Value = True Then rez =  0 . 95  * (Val(B.Text)) * ((Val(H.Text) ^  1 . 5 )) * (Val(Kd.Text))
        If OptionButton2.Value = True Then rez =  1 . 2  * (Val(B.Text)) * ((Val(H.Text) ^  1 . 5 )) * (Val(Kd.Text))
        Gd.Text = Str$(rez)
        Gd.Text = Format(rez, "###0.00")
    Else
        Gd.Text = ""
    End If
End Sub

Private Sub Bk_Change()
    Scet2
End Sub

Private Sub Hk_Change()
   Scet2
End Sub

Private Sub Scet2()
     If IsNumeric(Bk.Text) = True And Not Val(Hk.Text) =  0  Then
          rez = (Val(Gd.Text)) / ((((Val(Bk.Text)) -  30 ) * ((Val(Hk.Text)) -  50 )) /  1000000 )
          Vpk.Text = Str$(rez)
          Vpk.Text = Format(rez, "###0.00")
     Else
          Vpk.Text = ""
     End If
End Sub

Private Sub Bshaft_Change()
     Scet3
End Sub

Private Sub Hshaft_Change()
     Scet3
End Sub

Private Sub Scet3()
     If IsNumeric(Bshaft.Text) = True And Not Val(Hshaft.Text) =  0  Then
         rez = (Val(Gd.Text)) / (((Val(Bshaft.Text)) * (Val(Hshaft.Text))) /  1000000 )
         Vpshaft.Text = Str$(rez)
         Vpshaft.Text = Format(rez, "###0.00")
     Else
         Vpshaft.Text = ""
     End If
End Sub

Private Sub CR1_Change()
    Scet4
End Sub

Private Sub CR2_Change()
    Scet4
End Sub

Private Sub p_Change()
    Scet4
End Sub

Private Sub Scet4()
    If IsNumeric(CR1.Text) = True And Not Val(CR2.Text) =  0  And Not Val(p.Text) =  0  Then
         rez = (((Val(CR1.Text)) + (Val(CR2.Text))) * ((Val(Vpk.Text)) ^  2 )) / ( 2  * (Val(p.Text)))
         P1.Text = Str$(rez)
         P1.Text = Format(rez, "###0.00")
    Else
         P1.Text = ""
End If
End Sub

Private Sub Ktr_Change()
     Scet5
End Sub

Private Sub Rtr_Change()
    Scet5
End Sub

Private Sub Kc_Change()
     Scet5
End Sub

Private Sub l_Change()
     Scet5
End Sub

Private Sub zag_Change()
      Scet5
End Sub

Private Sub Scet5()
    If IsNumeric(Ktr.Text) = True And IsNumeric(Rtr.Text) = True And IsNumeric(Kc.Text) = True And Not Val(l.Text) =  0  And Not Val(zag.Text) = True Then
          rez = (Val(Ktr.Text)) * (Val(Rtr.Text)) * (Val(Kc.Text)) * (Val(l.Text)) + (Val(zag.Text)) * ((Val(Vpk.Text)) ^  2 ) / ( 2  * (Val(p.Text)))
          P2.Text = Str$(rez)
          P2.Text = Format(rez, "###0.00")
    Else
          P2.Text = ""
    End If
End Sub

Private Sub TextBox1_Change()
     Scet6
End Sub

Private Sub Scet6()
    If IsNumeric(TextBox1.Text) = True Then
         rez = (Val(TextBox1.Text)) * ((((((Val(Bk.Text)) -  30 ) * ((Val(Hk.Text)) -  50 )) /  1000000 ) * (Val(P1.Text)) + (Val(P2.Text))) ^  0 . 5 )
         Gk1.Text = Str$(rez)
         Gk1.Text = Format(rez, "###0.000")
    Else
         Gk1.Text = ""
    End If
End Sub

Тока я всем TextBox ам свои имена присвоил

Модератор: Учитесь форматировать код. Это можно сделать пробелами и тегом [ SRC VBA][/SRC].
...
Рейтинг: 0 / 0
автоматическое обновление TextBox
    #34418120
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы не стал так делать.
Я бы создал структуру данных, и уже ее привязал бы к полям ввода и отображения данных.
Проще всего использовать рекордсет.
И в его обработчике FieldChangeComplete всю логику рассчетов и прописать.
Опишите задачу словами и формулами - и я выложу пример.
...
Рейтинг: 0 / 0
автоматическое обновление TextBox
    #34422772
nikalex2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо модератору за совет

я вот немного код поменял, сейчас вот как выглядит
вроде всё работает

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
Option Explicit
Dim rez As Variant

Private Sub Scet()
                
If Me.B.Text <> "" And Me.H.Text <> "" And Me.Kd.Text <> "" Then
    If IsNumeric(B.Text) = True And Not Val(H.Text) =  0  And Not Val(Kd.Text) =  0  Then
       If Val(Me.B.Text) <>  0  And Val(Me.H.Text) <>  0  And (Me.Kd.Text) <>  0  Then
            If OptionButton1.Value = True Then rez =  0 . 95  * (Val(B.Text)) * ((Val(H.Text) ^  1 . 5 )) * (Val(Kd.Text))
            If OptionButton2.Value = True Then rez =  1 . 2  * (Val(B.Text)) * ((Val(H.Text) ^  1 . 5 )) * (Val(Kd.Text))
            Gd.Text = Format(Str$(rez), "###0.00")
        Else
            Gd.Text = ""
        End If
    End If
End If

If Me.Bk.Text <> "" And Me.Hk.Text <> "" Then
    If IsNumeric(Bk.Text) = True And Not Val(Hk.Text) =  0  Then
        rez = (Val(Gd.Text)) / ((((Val(Bk.Text)) -  30 ) * ((Val(Hk.Text)) -  50 )) /  1000000 )
        Vpk.Text = Format(Str$(rez), "###0.00")
    Else
        Vpk.Text = ""
    End If
End If

If Me.Bshaft.Text <> "" And Me.Hshaft.Text <> "" Then
    If IsNumeric(Bshaft.Text) = True And Not Val(Hshaft.Text) =  0  Then
rez = ((Val(Bshaft.Text)) * (Val(Hshaft.Text))) /  1000000 
Fshaft.Text = rez
Else
Fshaft.Text = ""
    End If
End If

If Me.Bshaft.Text <> "" And Me.Hshaft.Text <> "" Then
    If IsNumeric(Bshaft.Text) = True And Not Val(Hshaft.Text) =  0  Then
        rez = (Val(Gd.Text)) / (Val(Fshaft.Text))
        Vpshaft.Text = Format(Str$(rez), "###0.00")
    Else
        Vpshaft.Text = ""
    End If
End If

If Me.CR1.Text <> "" And Me.CR2.Text <> "" And Me.p.Text <> "" Then
    If IsNumeric(CR1.Text) = True And Not Val(CR2.Text) =  0  And Not Val(p.Text) =  0  Then
        rez = (((Val(CR1.Text)) + (Val(CR2.Text))) * ((Val(Vpk.Text)) ^  2 )) / ( 2  * (Val(p.Text)))
        P1.Text = Format(Str$(rez), "###0.00")
    Else
        P1.Text = ""
    End If
End If

If Me.Ktr.Text <> "" And Me.Rtr.Text <> "" And Me.Kc.Text <> "" And Me.l.Text <> "" And Me.zag.Text <> "" Then
    If IsNumeric(Ktr.Text) = True And IsNumeric(Rtr.Text) = True And IsNumeric(Kc.Text) = True And Not Val(l.Text) =  0  And Not Val(zag.Text) = True Then
        rez = (Val(Ktr.Text)) * (Val(Rtr.Text)) * (Val(Kc.Text)) * (Val(l.Text)) + (Val(zag.Text)) * ((Val(Vpk.Text)) ^  2 ) / ( 2  * (Val(p.Text)))
        P2.Text = Format(Str$(rez), "###0.00")
    Else
        P2.Text = ""
    End If
End If

Gk1 =  0 . 0112  * ((((((Val(Bk.Text)) -  30 ) * ((Val(Hk.Text)) -  50 )) /  1000000 ) * (Val(P1.Text)) + (Val(P2.Text))) ^  0 . 5 )
Gk1.Text = Format(Gk1, "###0.00")


If Nl.Text <> "" Then
   If IsNumeric(Nl.Text) = True Then
rez = (Val(Gd.Text)) + (Val(Gk1.Text)) * ((Val(Nl.Text)) -  1 )
Gy1.Text = Format(Str$(rez), "###0.00")
    Else
Gy1.Text = ""
    End If
End If

Fshaft2 = ((Val(Bshaft2.Text)) * (Val(Hshaft2.Text))) /  1000000 
Fshaft2.Text = Format(Fshaft2, "###0.00")

If Me.Bshaft2.Text <> "" And Me.Hshaft2.Text <> "" Then
    If IsNumeric(Bshaft2.Text) = True And Not Val(Hshaft2.Text) =  0  Then
rez = ((Val(Gd.Text)) / (Val(Fshaft2.Text))) ^  2  / ( 2  *  0 . 61 )
hd1.Text = Format(Str$(rez), "###0.00")
    Else
hd1.Text = ""
    End If
End If

py = (Val(Gy1.Text)) * ((Val(Gd.Text)) /  0 . 61  + ((Val(Gy1.Text)) - (Val(Gd.Text)) /  1 . 2 ))
py.Text = Format(py, "###0.00")

If Me.Bshaft.Text <> "" And Me.Hshaft2.Text <> "" Then
    If IsNumeric(Bshaft2.Text) = True And Not Val(Hshaft2.Text) =  0  Then
rez = ((Val(Gy1.Text)) / (Val(Fshaft2.Text))) ^  2  / ( 2  * (Val(py.Text)))
hdy.Text = Format(Str$(rez), "###0.00")
    Else
hdy.Text = ""
    End If
End If

hdsr = ((Val(hd1.Text)) + (Val(hdy.Text))) *  0 . 5 
hdsr.Text = Format(hdsr, "###0.00")

If Me.Rtr2.Text <> "" And Me.Hl.Text <> "" And Me.Nl.Text <> "" Then
    If IsNumeric(Rtr2.Text) = True And Not Val(Hl.Text) =  0  And Not Val(Nl.Text) =  0  Then
        rez =  10 . 8  * (Val(Rtr2.Text)) * (Val(Kc.Text)) * (Val(Hl.Text)) * ((Val(Nl.Text)) -  1 ) +  0 . 1  * ((Val(Nl.Text)) -  1 ) * (Val(hdsr.Text)) + (Val(P1.Text)) + (Val(P2.Text))
        Py1.Text = Format(Str$(rez), "###0.00")
    Else
        Py1.Text = ""
    End If
End If













End Sub




Private Sub OptionButton1_Click()
Scet
End Sub

Private Sub OptionButton2_Click()
Scet
End Sub
Private Sub B_Change()
Scet
End Sub

Private Sub H_Change()
Scet
End Sub

Private Sub Kd_Change()
Scet
End Sub

Private Sub Bk_Change()
Scet
End Sub

Private Sub Hk_Change()
Scet
End Sub

Private Sub Bshaft_Change()
Scet
End Sub

Private Sub Hshaft_Change()
Scet
End Sub

Private Sub CR1_Change()
Scet
End Sub

Private Sub CR2_Change()
Scet
End Sub

Private Sub p_Change()
Scet
End Sub

Private Sub Ktr_Change()
Scet
End Sub

Private Sub Rtr_Change()
Scet
End Sub

Private Sub Kc_Change()
Scet
End Sub

Private Sub l_Change()
Scet
End Sub

Private Sub zag_Change()
Scet
End Sub

Private Sub Nl_Change()
Scet
End Sub

Private Sub Rtr2_Change()
Scet
End Sub

Private Sub Hl_Change()
Scet
End Sub

Private Sub Bshaft2_Change()
Scet
End Sub

Private Sub Hshaft2_Change()
Scet
End Sub


тока вот вопрос возник
там у меня прописана куча формул, а как сделать так чтобы

определенная формула выполнялась только после того как выполняться например 3, 4 и 5 формулы

???
...
Рейтинг: 0 / 0
автоматическое обновление TextBox
    #34422842
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikalex2
определенная формула выполнялась только после того как выполняться например 3, 4 и 5 формулы

Давай уточним. Имеется ввиду успешное выполнение? Т.е. формула 6 должна считаться только если успешно просчтаны формулы 3,4, 5?
Т.е. все дело в условиях на каждую формулу. Чтобы не проверять их все по новой, организую флаги(переменные типа Bool) для каждой формулы и устанавливай их в True после расчета формулы. В самом конце проверяй состояниие флагов перед расчетом формулы 6.
...
Рейтинг: 0 / 0
автоматическое обновление TextBox
    #34422905
nikalex2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Magnus23 nikalex2
определенная формула выполнялась только после того как выполняться например 3, 4 и 5 формулы

Давай уточним. Имеется ввиду успешное выполнение? Т.е. формула 6 должна считаться только если успешно просчтаны формулы 3,4, 5?
Т.е. все дело в условиях на каждую формулу. Чтобы не проверять их все по новой, организую флаги(переменные типа Bool) для каждой формулы и устанавливай их в True после расчета формулы. В самом конце проверяй состояниие флагов перед расчетом формулы 6.

ну да типа того
...
Рейтинг: 0 / 0
автоматическое обновление TextBox
    #34423000
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В смысле "типа того"? Ты флаги сделал? Получилось?


Magnus
...
Рейтинг: 0 / 0
автоматическое обновление TextBox
    #34423944
nikalex2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я новичек

до раздела где описывается как ставить флаги я есчё не дошел
нада почитать
...
Рейтинг: 0 / 0
автоматическое обновление TextBox
    #34424711
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ох..
Я ж там в скобках написал флаги - переменные типа Bool. Т.е. они могут принимать только 2 значения : true и False - истинно и ложно.

Т.е в твоем случае, создаешь переменные

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Dim bFlag3 as Bool
Dim bFlag4 as Bool
Dim bFlag5 as Bool

после расчета формул устанавливаешь флаги в True

.. расчет формулы3...
 bFlag3 = True 

.. расчет формулы4...
 bFlag4 = True 

.. расчет формулы5...
 bFlag5 = True 


а перед формулой6 проверяшь состояния флагов

 IF (bFlag3 and bFlag4 and bFlag5) Then
       расчет формулы6
 End IF





Magnus
...
Рейтинг: 0 / 0
автоматическое обновление TextBox
    #34424722
nikalex2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Magnus23

о как круто, щаз мы это проверим, щаз мы чтонить сотворим

спасибо
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / автоматическое обновление TextBox
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]