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

Вход

Регистрация

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

 

= Мир MS Excel/Советы и рекомендации по создаваемой программе. - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Советы и рекомендации по создаваемой программе. (Макросы Sub)
Советы и рекомендации по создаваемой программе.
Stormy Дата: Вторник, 11.02.2014, 17:48 | Сообщение № 21
Группа: Проверенные
Ранг: Обитатель
Сообщений: 357
Репутация: 12 ±
Замечаний: 0% ±

Excel 2010
Сейчас сделал так, но пока глючит ((
[vba]
Код
Dim kr, deq, metr, m2
   deq = "d" & ChrW(601) & "q"
   metr = m
   m2 = "м" & ChrW(178)
   kr = Worksheets("Proqram2").Range("O19")
If kr = deq Then
   Me.MultiPage.Pages(0).TextBox3.Locked = True
   Me.MultiPage.Pages(0).TextBox3.Enabled = False
   Me.MultiPage.Pages(0).TextBox4.Locked = True
   Me.MultiPage.Pages(0).TextBox4.Enabled = False
   Me.MultiPage.Pages(0).Label10.Caption = "Vaxt"
   End If
If kr = metr Then
   Me.MultiPage.Pages(0).TextBox3.Locked = False
   Me.MultiPage.Pages(0).TextBox3.Enabled = True
   Me.MultiPage.Pages(0).TextBox4.Locked = True
   Me.MultiPage.Pages(0).TextBox4.Enabled = False
   End If
If kr = m2 Then
   Me.MultiPage.Pages(0).TextBox3.Locked = False
   Me.MultiPage.Pages(0).TextBox3.Enabled = True
   Me.MultiPage.Pages(0).TextBox4.Locked = False
   Me.MultiPage.Pages(0).TextBox4.Enabled = True
   Me.MultiPage.Pages(0).Label10.Caption = "Say" & ChrW(305)
   End If
[/vba]

nilem, а как в Вашем варианте, Enabled и Locked ,которые в зависимости от критерий могут быть или отключены или включены? Все необходимое для Case 1 нужно помес под ним?тить


Место для рекламы.
 
Ответить
СообщениеСейчас сделал так, но пока глючит ((
[vba]
Код
Dim kr, deq, metr, m2
   deq = "d" & ChrW(601) & "q"
   metr = m
   m2 = "м" & ChrW(178)
   kr = Worksheets("Proqram2").Range("O19")
If kr = deq Then
   Me.MultiPage.Pages(0).TextBox3.Locked = True
   Me.MultiPage.Pages(0).TextBox3.Enabled = False
   Me.MultiPage.Pages(0).TextBox4.Locked = True
   Me.MultiPage.Pages(0).TextBox4.Enabled = False
   Me.MultiPage.Pages(0).Label10.Caption = "Vaxt"
   End If
If kr = metr Then
   Me.MultiPage.Pages(0).TextBox3.Locked = False
   Me.MultiPage.Pages(0).TextBox3.Enabled = True
   Me.MultiPage.Pages(0).TextBox4.Locked = True
   Me.MultiPage.Pages(0).TextBox4.Enabled = False
   End If
If kr = m2 Then
   Me.MultiPage.Pages(0).TextBox3.Locked = False
   Me.MultiPage.Pages(0).TextBox3.Enabled = True
   Me.MultiPage.Pages(0).TextBox4.Locked = False
   Me.MultiPage.Pages(0).TextBox4.Enabled = True
   Me.MultiPage.Pages(0).Label10.Caption = "Say" & ChrW(305)
   End If
[/vba]

nilem, а как в Вашем варианте, Enabled и Locked ,которые в зависимости от критерий могут быть или отключены или включены? Все необходимое для Case 1 нужно помес под ним?тить

Автор - Stormy
Дата добавления - 11.02.2014 в 17:48
nilem Дата: Вторник, 11.02.2014, 18:04 | Сообщение № 22
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
В прошлом пример у вас во всех 3-х случаях были одинаковые значения для Enabled, поэтому поместил их после Select Case. Если отличия все же есть, то, да
[vba]
Код
Case 1
Me.TextBox3.Enabled = False
Case 2
Me.TextBox3.Enabled = true
etc.
[/vba]
Enabled и Locked - практически одно и то же, выберите что-нибудь одно (Enabled)
К контролам можно обращаться короче Me.TextBox3.Enabled (без MultiPage.Pages(0))


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеВ прошлом пример у вас во всех 3-х случаях были одинаковые значения для Enabled, поэтому поместил их после Select Case. Если отличия все же есть, то, да
[vba]
Код
Case 1
Me.TextBox3.Enabled = False
Case 2
Me.TextBox3.Enabled = true
etc.
[/vba]
Enabled и Locked - практически одно и то же, выберите что-нибудь одно (Enabled)
К контролам можно обращаться короче Me.TextBox3.Enabled (без MultiPage.Pages(0))

Автор - nilem
Дата добавления - 11.02.2014 в 18:04
Stormy Дата: Вторник, 11.02.2014, 18:32 | Сообщение № 23
Группа: Проверенные
Ранг: Обитатель
Сообщений: 357
Репутация: 12 ±
Замечаний: 0% ±

Excel 2010
[vba]
Код
Private Sub ComboBox3_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
'Определение единицы измерения в лейбле после выбора материала в текстбоксе
Me.Label7.Caption = Worksheets("Proqram2").Cells(19, 15)
' Отключаем не используемые текстбоксы
    Select Case Worksheets("Proqram2").Cells(19, 15)
      Case "d" & ChrW(601) & "q"
          Me.TextBox3.Enabled = False
          Me.TextBox4.Enabled = False
          Me.MultiPage.Pages(0).Label10.Caption = "Vaxt"
      Case m
          Me.TextBox3.Enabled = True
          Me.TextBox4.Enabled = True
          Me.MultiPage.Pages(0).Label10.Caption = "Say" & ChrW(305)
      Case "ì" & ChrW(178)
          MsgBox 22222222
End Select
End Sub
[/vba]
Первый блок нормально срабатывает, а вот дальше идет ступор (( Значение Enabled не меняется

UPD: Разобрался . Буква не была заключена в кавычки и отсюд все беды.


Место для рекламы.

Сообщение отредактировал Stormy - Вторник, 11.02.2014, 18:40
 
Ответить
Сообщение[vba]
Код
Private Sub ComboBox3_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
'Определение единицы измерения в лейбле после выбора материала в текстбоксе
Me.Label7.Caption = Worksheets("Proqram2").Cells(19, 15)
' Отключаем не используемые текстбоксы
    Select Case Worksheets("Proqram2").Cells(19, 15)
      Case "d" & ChrW(601) & "q"
          Me.TextBox3.Enabled = False
          Me.TextBox4.Enabled = False
          Me.MultiPage.Pages(0).Label10.Caption = "Vaxt"
      Case m
          Me.TextBox3.Enabled = True
          Me.TextBox4.Enabled = True
          Me.MultiPage.Pages(0).Label10.Caption = "Say" & ChrW(305)
      Case "ì" & ChrW(178)
          MsgBox 22222222
End Select
End Sub
[/vba]
Первый блок нормально срабатывает, а вот дальше идет ступор (( Значение Enabled не меняется

UPD: Разобрался . Буква не была заключена в кавычки и отсюд все беды.

Автор - Stormy
Дата добавления - 11.02.2014 в 18:32
nilem Дата: Вторник, 11.02.2014, 18:44 | Сообщение № 24
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
можно так [vba]
Код
Me.Label10.Caption = "Say" & ChrW(305) - без MultiPage.Pages(0)
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениеможно так [vba]
Код
Me.Label10.Caption = "Say" & ChrW(305) - без MultiPage.Pages(0)
[/vba]

Автор - nilem
Дата добавления - 11.02.2014 в 18:44
Stormy Дата: Вторник, 11.02.2014, 21:21 | Сообщение № 25
Группа: Проверенные
Ранг: Обитатель
Сообщений: 357
Репутация: 12 ±
Замечаний: 0% ±

Excel 2010
nilem,
Ага, уже подправил все.
2all
Теперь вот какой момент.
Использует ли VBA *формулу в формуле*?
[vba]
Код
Me.Label12.Caption = Round(Me.TextBox5 / 435 & " gun", 2)
[/vba] так не работает
[vba]
Код
Me.Label12.Caption = Me.TextBox5 / 435 & " gun"
[/vba] так работает.
Не нашел где почитать про это. может не правильно ищу ((

UPD: Разобрался. Неправильный синтаксис был.
Так работает.
[vba]
Код
Round(Me.TextBox3 * Me.TextBox5 / 1000, 2) & " m"
[/vba]


Место для рекламы.

Сообщение отредактировал Stormy - Вторник, 11.02.2014, 21:34
 
Ответить
Сообщениеnilem,
Ага, уже подправил все.
2all
Теперь вот какой момент.
Использует ли VBA *формулу в формуле*?
[vba]
Код
Me.Label12.Caption = Round(Me.TextBox5 / 435 & " gun", 2)
[/vba] так не работает
[vba]
Код
Me.Label12.Caption = Me.TextBox5 / 435 & " gun"
[/vba] так работает.
Не нашел где почитать про это. может не правильно ищу ((

UPD: Разобрался. Неправильный синтаксис был.
Так работает.
[vba]
Код
Round(Me.TextBox3 * Me.TextBox5 / 1000, 2) & " m"
[/vba]

Автор - Stormy
Дата добавления - 11.02.2014 в 21:21
Stormy Дата: Вторник, 11.02.2014, 22:27 | Сообщение № 26
Группа: Проверенные
Ранг: Обитатель
Сообщений: 357
Репутация: 12 ±
Замечаний: 0% ±

Excel 2010
Помогите написать обработчик события для 2-3 (заранее известных) textbox.
Есть несколько текстбоксов. Текстбокс3 = длина, текстбокс4 = ширина, текстбокс5 = кол-во.

[vba]
Код
Private Sub Textbox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Select Case Worksheets("Proqram2").Cells(19, 15)
      Case "d" & ChrW(601) & "q"
          Me.TextBox3.Enabled = False
          Me.TextBox4.Enabled = False
          Me.Label10.Caption = "Vaxt"
          Me.Label12.Caption = Round(Me.TextBox5 / 435, 2) & " g" & ChrW(246) & "n"
      Case "m"
          Me.TextBox3.Enabled = True
          Me.TextBox4.Enabled = False
          Me.Label10.Caption = "Say" & ChrW(305)
          Me.Label12.Caption = Round(Me.TextBox3 * Me.TextBox5 / 1000, 2) & " m"
            
      Case "m" & ChrW(178)
          Me.TextBox3.Enabled = True
          Me.TextBox4.Enabled = True
          Me.Label10.Caption = "Say" & ChrW(305)
          Me.Label12.Caption = Round((Me.TextBox3 * Me.TextBox4 / 1000000) * Me.TextBox5, 2) & " m" & ChrW(178)
End Select
   End Sub
[/vba]
Так в принципе работает. При изменение длины происходит перерасчет. Дублировать тоже самое для других текстбоксов кажется не совсем верным. Есть ли другое решение?

[admin]Тема закрыта. Причина: Множественные нарушения правил, пп. 1, 2, 3, 4, 5...[/admin]


Место для рекламы.
 
Ответить
СообщениеПомогите написать обработчик события для 2-3 (заранее известных) textbox.
Есть несколько текстбоксов. Текстбокс3 = длина, текстбокс4 = ширина, текстбокс5 = кол-во.

[vba]
Код
Private Sub Textbox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Select Case Worksheets("Proqram2").Cells(19, 15)
      Case "d" & ChrW(601) & "q"
          Me.TextBox3.Enabled = False
          Me.TextBox4.Enabled = False
          Me.Label10.Caption = "Vaxt"
          Me.Label12.Caption = Round(Me.TextBox5 / 435, 2) & " g" & ChrW(246) & "n"
      Case "m"
          Me.TextBox3.Enabled = True
          Me.TextBox4.Enabled = False
          Me.Label10.Caption = "Say" & ChrW(305)
          Me.Label12.Caption = Round(Me.TextBox3 * Me.TextBox5 / 1000, 2) & " m"
            
      Case "m" & ChrW(178)
          Me.TextBox3.Enabled = True
          Me.TextBox4.Enabled = True
          Me.Label10.Caption = "Say" & ChrW(305)
          Me.Label12.Caption = Round((Me.TextBox3 * Me.TextBox4 / 1000000) * Me.TextBox5, 2) & " m" & ChrW(178)
End Select
   End Sub
[/vba]
Так в принципе работает. При изменение длины происходит перерасчет. Дублировать тоже самое для других текстбоксов кажется не совсем верным. Есть ли другое решение?

[admin]Тема закрыта. Причина: Множественные нарушения правил, пп. 1, 2, 3, 4, 5...[/admin]

Автор - Stormy
Дата добавления - 11.02.2014 в 22:27
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Советы и рекомендации по создаваемой программе. (Макросы Sub)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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