Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Спростить правильно код - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Спростить правильно код (Макросы/Sub)
Спростить правильно код
anger47 Дата: Пятница, 26.09.2014, 18:45 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 192
Репутация: 6 ±
Замечаний: 0% ±

Здравствуйте, форумчане!
Помогите правильно сократить код VBA:
[vba]
Код
Private Sub CheckBox1_Click()
If CheckBox1 = True Then
                  TextBox1.Locked = False
                  TextBox1 = "1"
                  TextBox1.Enabled = True
                  TextBox1.BackColor = &H80000005
                  TextBox2.Locked = False
                  TextBox2.Enabled = True
                  TextBox2.BackColor = &H80000005
                  TextBox3.Locked = False
                  TextBox3.Enabled = True
                  TextBox3.BackColor = &H80000005
                  ComboBox1.Locked = False
                  ComboBox1.Enabled = True
                  ComboBox1.BackColor = &H80000005
                  ComboBox2.Locked = False
                  ComboBox2.Enabled = True
                  ComboBox2.BackColor = &H80000005
                  ComboBox3.Locked = False
                  ComboBox3.Enabled = True
                  ComboBox3.BackColor = &H80000005
              Else
                  TextBox1 = ""
                  TextBox1.Locked = True
                  TextBox1.Enabled = False
                  TextBox1.BackColor = &H80000004
                  TextBox2.Locked = True
                  TextBox2.Enabled = False
                  TextBox2.BackColor = &H80000004
                  TextBox3.Locked = True
                  TextBox3.Enabled = False
                  TextBox3.BackColor = &H80000004
                  ComboBox1.Locked = True
                  ComboBox1.Enabled = False
                  ComboBox1.BackColor = &H80000004
                  ComboBox2.Locked = True
                  ComboBox2.Enabled = False
                  ComboBox2.BackColor = &H80000004
                  ComboBox3.Locked = True
                  ComboBox3.Enabled = False
                  ComboBox3.BackColor = &H80000004
              End If
End Sub
[/vba]
Подобных TextBox_ов и ComboBox_ов около 50-ти штук.


Сообщение отредактировал anger47 - Пятница, 26.09.2014, 18:46
 
Ответить
СообщениеЗдравствуйте, форумчане!
Помогите правильно сократить код VBA:
[vba]
Код
Private Sub CheckBox1_Click()
If CheckBox1 = True Then
                  TextBox1.Locked = False
                  TextBox1 = "1"
                  TextBox1.Enabled = True
                  TextBox1.BackColor = &H80000005
                  TextBox2.Locked = False
                  TextBox2.Enabled = True
                  TextBox2.BackColor = &H80000005
                  TextBox3.Locked = False
                  TextBox3.Enabled = True
                  TextBox3.BackColor = &H80000005
                  ComboBox1.Locked = False
                  ComboBox1.Enabled = True
                  ComboBox1.BackColor = &H80000005
                  ComboBox2.Locked = False
                  ComboBox2.Enabled = True
                  ComboBox2.BackColor = &H80000005
                  ComboBox3.Locked = False
                  ComboBox3.Enabled = True
                  ComboBox3.BackColor = &H80000005
              Else
                  TextBox1 = ""
                  TextBox1.Locked = True
                  TextBox1.Enabled = False
                  TextBox1.BackColor = &H80000004
                  TextBox2.Locked = True
                  TextBox2.Enabled = False
                  TextBox2.BackColor = &H80000004
                  TextBox3.Locked = True
                  TextBox3.Enabled = False
                  TextBox3.BackColor = &H80000004
                  ComboBox1.Locked = True
                  ComboBox1.Enabled = False
                  ComboBox1.BackColor = &H80000004
                  ComboBox2.Locked = True
                  ComboBox2.Enabled = False
                  ComboBox2.BackColor = &H80000004
                  ComboBox3.Locked = True
                  ComboBox3.Enabled = False
                  ComboBox3.BackColor = &H80000004
              End If
End Sub
[/vba]
Подобных TextBox_ов и ComboBox_ов около 50-ти штук.

Автор - anger47
Дата добавления - 26.09.2014 в 18:45
The_Prist Дата: Пятница, 26.09.2014, 18:49 | Сообщение № 2
Группа: Друзья
Ранг: Участник
Сообщений: 85
Репутация: 22 ±
Замечаний: 0% ±

2010


Errare humanum est, stultum est in errore perseverare
 
Ответить
СообщениеКак быстро заполнить/очистить элементы на форме(TextBox-ы, ComboBox-ы)

Автор - The_Prist
Дата добавления - 26.09.2014 в 18:49
anger47 Дата: Суббота, 27.09.2014, 00:06 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 192
Репутация: 6 ±
Замечаний: 0% ±

я накатал вот так)
[vba]
Код
Dim i As Integer
For i = 2 To 3 Step 1
       Me.Controls("TextBox" & i).Value = i
Next i
[/vba]
тут получаеться, что в текст боксах пишет числа "2" или "3"
но ка бы не то. мне надо, что при нажатии на ЧекБокс изменялись Свойста TextBox_ов и ComboBox_ов. Если CheckBox "да", то Свойстово [vba]
Код
Locked = True и Enabled = False
[/vba], когда не активирован, то обратно [vba]
Код
Locked = False и Enabled = True
[/vba]


Сообщение отредактировал anger47 - Суббота, 27.09.2014, 00:09
 
Ответить
Сообщениея накатал вот так)
[vba]
Код
Dim i As Integer
For i = 2 To 3 Step 1
       Me.Controls("TextBox" & i).Value = i
Next i
[/vba]
тут получаеться, что в текст боксах пишет числа "2" или "3"
но ка бы не то. мне надо, что при нажатии на ЧекБокс изменялись Свойста TextBox_ов и ComboBox_ов. Если CheckBox "да", то Свойстово [vba]
Код
Locked = True и Enabled = False
[/vba], когда не активирован, то обратно [vba]
Код
Locked = False и Enabled = True
[/vba]

Автор - anger47
Дата добавления - 27.09.2014 в 00:06
wild_pig Дата: Суббота, 27.09.2014, 00:49 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 516
Репутация: 97 ±
Замечаний: 0% ±

2003, 2013
Вместо .Value пишите свои .Locked и .Enabled
 
Ответить
СообщениеВместо .Value пишите свои .Locked и .Enabled

Автор - wild_pig
Дата добавления - 27.09.2014 в 00:49
AndreTM Дата: Суббота, 27.09.2014, 06:27 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
я накатал вот так)
А вы понимаете, что ваш код (из четырех строк) аналогичен всего двум строчкам:
[vba]
Код
TextBox2.Value = 2
TextBox3.Value = 3
[/vba]что же вы тогда такое написали?

Можно как-то так, как в примере (Form1), но всё равно, логика переключений немного хромает...
И я бы посоветовал для "объединения" контролов с однотипными свойствами, которыми нужно управлять, воспользоваться каким-либо методом. В примере (Form2) это сделано с помощью фрейма; можно использовать имена контролов "по шаблону", или свойство "Tag", или ещё чего... :)
К сообщению приложен файл: 10-13199-1-1.xls (39.5 Kb)


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение
я накатал вот так)
А вы понимаете, что ваш код (из четырех строк) аналогичен всего двум строчкам:
[vba]
Код
TextBox2.Value = 2
TextBox3.Value = 3
[/vba]что же вы тогда такое написали?

Можно как-то так, как в примере (Form1), но всё равно, логика переключений немного хромает...
И я бы посоветовал для "объединения" контролов с однотипными свойствами, которыми нужно управлять, воспользоваться каким-либо методом. В примере (Form2) это сделано с помощью фрейма; можно использовать имена контролов "по шаблону", или свойство "Tag", или ещё чего... :)

Автор - AndreTM
Дата добавления - 27.09.2014 в 06:27
The_Prist Дата: Суббота, 27.09.2014, 16:37 | Сообщение № 6
Группа: Друзья
Ранг: Участник
Сообщений: 85
Репутация: 22 ±
Замечаний: 0% ±

2010
я накатал вот так)

Это называется скатал, а не накатал. Взяли и без вчитываний и раздумий содрали код с сайта. Вы хоть свойства для контролов вставляйте свои, а не те что для примера на сайте. Надо же понимать, что я когда статью писал должен был выбрать какое-то свойство для примера, а не все подряд туда закидывать.
[vba]
Код
Me.Controls("TextBox" & i).Enabled = True
Me.Controls("TextBox" & i).BackColor = &H80000005
[/vba]
Естественно, я привел не полный код - уверен, что хватит у Вас сил додумать как это завернуть в свой If ... Then ... Else


Errare humanum est, stultum est in errore perseverare
 
Ответить
Сообщение
я накатал вот так)

Это называется скатал, а не накатал. Взяли и без вчитываний и раздумий содрали код с сайта. Вы хоть свойства для контролов вставляйте свои, а не те что для примера на сайте. Надо же понимать, что я когда статью писал должен был выбрать какое-то свойство для примера, а не все подряд туда закидывать.
[vba]
Код
Me.Controls("TextBox" & i).Enabled = True
Me.Controls("TextBox" & i).BackColor = &H80000005
[/vba]
Естественно, я привел не полный код - уверен, что хватит у Вас сил додумать как это завернуть в свой If ... Then ... Else

Автор - The_Prist
Дата добавления - 27.09.2014 в 16:37
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Спростить правильно код (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!