powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / VBA Excel
5 сообщений из 5, страница 1 из 1
VBA Excel
    #32769423
Jaguar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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.
на диалоговом окне ( форме ) имеется  72  контрола 
типа TextBox . Контролы расположены в 
 9  строк *  9  колонок
TextBox1 – TextBox8
TextBox9 – TextBox16
TextBox17 – TextBox24
TextBox25 – TextBox32
TextBox33 – TextBox40
TextBox41 – TextBox48
TextBox49 – TextBox56
TextBox57 – TextBox64
TextBox65 – TextBox72

нижеидущий код делает видимым – невидимым
все  72  контролы
For Each ctrl In UserForm1.Controls
    If TypeName(ctrl) = "TextBox" Then  
         ctrl.Text =  0  
        ctrl.Visible = m_bSign
End If  '
Next

Как сделать НЕДОСТУПНЫМИ  4  правые контрола
каждой из  9 -ти строк ?

UserForm1.TextBox5.Enabled = False
UserForm1.TextBox6.Enabled = False
UserForm1.TextBox7.Enabled = False 
UserForm1.TextBox8.Enabled = False

UserForm1.TextBox13.Enabled = False
UserForm1.TextBox14.Enabled = False 
UserForm1.TextBox15.Enabled = False
UserForm1.TextBox16.Enabled = False

и так далее
НЕ ПИСАТЬ ЖЕ 16 одинаковых строк,
отличающиеся номером контрола
TextBoxXX

СПАСИБО
...
Рейтинг: 0 / 0
VBA Excel
    #32769590
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
For Each ctrl In UserForm1.Controls
dim iN as long
    If TypeName(ctrl) = "TextBox" Then  
    iN=clng(replace(ctrl.name,TextBox,""))
    ctrl.enabled=not( ((Int(iN /  9 ) +  1 ) *  9  - iN) <=  4  )

End If  
Next
при условии что контролы расположены так
0 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

...
Рейтинг: 0 / 0
VBA Excel
    #32770060
Jaguar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
big-duke
контролы именно так и расположены –
в возростающей последоввательности
в конце имени , например, TextBox1,
TextBox2, TextBox, и т.д. TextBox72

Run-time error ‘13’
Type mismatch

in1 = CLng(Replace(ctrl.Name, TextBox, ""))

Код: plaintext
1.
2.
3.
4.
5.
6.
Dim in1 As Long
For Each ctrl In UserForm1.Controls
    If TypeName(ctrl) = "TextBox" Then
    in1 = CLng(Replace(ctrl.Name, TextBox, ""))
    ctrl.Enabled = Not (((Int(in1 /  9 ) +  1 ) *  9  - in1) <=  4 )
End If
Next
...
Рейтинг: 0 / 0
VBA Excel
    #32770077
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iN=clng(replace(ctrl.name,"TextBox",""))
...
Рейтинг: 0 / 0
VBA Excel
    #32770416
Jaguar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
big-duke

БОЛЬШОЕ СПАСИБО,

РАБОТАЕТ ПРАВИЛЬНО
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / VBA Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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