Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / VBA Excel / 5 сообщений из 5, страница 1 из 1
04.11.2004, 18:06
    #32769423
Jaguar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel
Код: 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
04.11.2004, 19:41
    #32769590
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel
Код: 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
05.11.2004, 10:31
    #32770060
Jaguar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel
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
05.11.2004, 10:41
    #32770077
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel
iN=clng(replace(ctrl.name,"TextBox",""))
...
Рейтинг: 0 / 0
05.11.2004, 12:31
    #32770416
Jaguar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel
big-duke

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

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


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