Доброго времени суток. Похоже я не там писал тему по макросам в VBA. Окажите помощь в написании макроса для управления флажками. Просто я не знаю что в них нужно прописывать. С одним флажком bmv98rus мне помог. Нужно смешанное управление, т.е. флажки 6-15 включаются индивидуально при включении флажка 3, включаются флажки 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 при включении флажка 4, включаются флажки 7, 9, 11 при включении флажка 5, включаются флажки 8, 10, 12 при включении флажков 7, 9, 11 включается флажок 4 при включении флажков 8, 10, 12 включается флажок 5
Подскажите где можно найти инфу по написанию макросов для флажков, желательно на русском. Заранее благодарен.
Доброго времени суток. Похоже я не там писал тему по макросам в VBA. Окажите помощь в написании макроса для управления флажками. Просто я не знаю что в них нужно прописывать. С одним флажком bmv98rus мне помог. Нужно смешанное управление, т.е. флажки 6-15 включаются индивидуально при включении флажка 3, включаются флажки 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 при включении флажка 4, включаются флажки 7, 9, 11 при включении флажка 5, включаются флажки 8, 10, 12 при включении флажков 7, 9, 11 включается флажок 4 при включении флажков 8, 10, 12 включается флажок 5
Подскажите где можно найти инфу по написанию макросов для флажков, желательно на русском. Заранее благодарен.Gold_Barsik
Sub CheckBoxClic() With ActiveSheet.Shapes(Application.Caller).DrawingObject Select Case Application.Caller Case "Check Box 1"
Case "Check Box 2" If ActiveSheet.Shapes("Check Box 1").DrawingObject.Value <> 1 Then _ .Value = False
Case "Check Box 3" If .Value <> 1 Then For i = 4 To 15 ActiveSheet.Shapes("Check Box " & i).DrawingObject.Value = .Value Next End If
Case "Check Box 4" If ActiveSheet.Shapes("Check Box 3").DrawingObject.Value <> 1 Then _ .Value = False If .Value <> 1 Then For i = 7 To 11 Step 2 ActiveSheet.Shapes("Check Box " & i).DrawingObject.Value = False Next End If
Case "Check Box 5" If ActiveSheet.Shapes("Check Box 3").DrawingObject.Value <> 1 Then _ .Value = False If .Value <> 1 Then For i = 8 To 12 Step 2 ActiveSheet.Shapes("Check Box " & i).DrawingObject.Value = False Next End If
Case "Check Box 6", "Check Box 13", "Check Box 14", "Check Box 15" If ActiveSheet.Shapes("Check Box 3").DrawingObject.Value <> 1 Then _ .Value = False Case "Check Box 7", "Check Box 9", "Check Box 11" If ActiveSheet.Shapes("Check Box 4").DrawingObject.Value <> 1 Then _ .Value = False Case "Check Box 8", "Check Box 10", "Check Box 12" If ActiveSheet.Shapes("Check Box 5").DrawingObject.Value <> 1 Then _ .Value = False End Select End With
End Sub
[/vba]
[vba]
Код
Sub CheckBoxClic() With ActiveSheet.Shapes(Application.Caller).DrawingObject Select Case Application.Caller Case "Check Box 1"
Case "Check Box 2" If ActiveSheet.Shapes("Check Box 1").DrawingObject.Value <> 1 Then _ .Value = False
Case "Check Box 3" If .Value <> 1 Then For i = 4 To 15 ActiveSheet.Shapes("Check Box " & i).DrawingObject.Value = .Value Next End If
Case "Check Box 4" If ActiveSheet.Shapes("Check Box 3").DrawingObject.Value <> 1 Then _ .Value = False If .Value <> 1 Then For i = 7 To 11 Step 2 ActiveSheet.Shapes("Check Box " & i).DrawingObject.Value = False Next End If
Case "Check Box 5" If ActiveSheet.Shapes("Check Box 3").DrawingObject.Value <> 1 Then _ .Value = False If .Value <> 1 Then For i = 8 To 12 Step 2 ActiveSheet.Shapes("Check Box " & i).DrawingObject.Value = False Next End If
Case "Check Box 6", "Check Box 13", "Check Box 14", "Check Box 15" If ActiveSheet.Shapes("Check Box 3").DrawingObject.Value <> 1 Then _ .Value = False Case "Check Box 7", "Check Box 9", "Check Box 11" If ActiveSheet.Shapes("Check Box 4").DrawingObject.Value <> 1 Then _ .Value = False Case "Check Box 8", "Check Box 10", "Check Box 12" If ActiveSheet.Shapes("Check Box 5").DrawingObject.Value <> 1 Then _ .Value = False End Select End With
bmv98rus, Попытки получить результат, успехом не увенчались.
Ошибка (???) со второй строчки [vba]
Код
With ActiveSheet.Shapes(Application.Caller).DrawingObject
[/vba] Вроде и макрос назначил. Может не туда куда следует? Можно ли порядок действий с макросом по подробнее? У меня Excel 2003! Там макрос должен работать?
bmv98rus, Попытки получить результат, успехом не увенчались.
Ошибка (???) со второй строчки [vba]
Код
With ActiveSheet.Shapes(Application.Caller).DrawingObject
[/vba] Вроде и макрос назначил. Может не туда куда следует? Можно ли порядок действий с макросом по подробнее? У меня Excel 2003! Там макрос должен работать?Gold_Barsik
Сообщение отредактировал Gold_Barsik - Воскресенье, 29.09.2019, 21:07
Уппс, да, я про это забыл. Если так, то придется для каждого писать свой код, не длинный, но свой, который делает проверки и изменения. Нужно ли это делать через лист, тоже не скажу.
Уппс, да, я про это забыл. Если так, то придется для каждого писать свой код, не длинный, но свой, который делает проверки и изменения. Нужно ли это делать через лист, тоже не скажу.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
Я только в пятницу с аналогичным вопросом обращался и сам же ответил: к флажкам из элементов управления формы можно обращаться как к элементам коллекции CheckBoxes Например: [vba]
Код
Sub ttt() Debug.Print Me.CheckBoxes("FLAG").Value End Sub
[/vba]
Я только в пятницу с аналогичным вопросом обращался и сам же ответил: к флажкам из элементов управления формы можно обращаться как к элементам коллекции CheckBoxes Например: [vba]
Код
Sub ttt() Debug.Print Me.CheckBoxes("FLAG").Value End Sub
[/vba] я где то читал. Но что это ни черта не понял. Да ещё и вопрос Вы там закрыли, не раскрыв подробностей . RAN, [vba]
Код
полюбопытствовать
[/vba] извольте , например у меня ни в 2003, ни 2007 ничего не сработало . А чего там отсутствует так я не берусь судить. Всё равно ни черта не понимаю . Но так сильно хочется (иметь рабочий файл) !
Alex_ST, Что то такое же [vba]
Код
к элементам коллекции CheckBoxes
[/vba] я где то читал. Но что это ни черта не понял. Да ещё и вопрос Вы там закрыли, не раскрыв подробностей . RAN, [vba]
Код
полюбопытствовать
[/vba] извольте , например у меня ни в 2003, ни 2007 ничего не сработало . А чего там отсутствует так я не берусь судить. Всё равно ни черта не понимаю . Но так сильно хочется (иметь рабочий файл) !Gold_Barsik
Нашёл как сделать через обращение к элементу коллекции CheckBoxes Например, на листе создан чек-бокс FLAG Тогда обратиться к его значению можно так: [vba]
Код
Sub ttt() Debug.Print Me.CheckBoxes("FLAG").Value End Sub
Нашёл как сделать через обращение к элементу коллекции CheckBoxes Например, на листе создан чек-бокс FLAG Тогда обратиться к его значению можно так: [vba]
Код
Sub ttt() Debug.Print Me.CheckBoxes("FLAG").Value End Sub
Alex_ST, Можете проверить мой код на 2003? У меня подозрения и на Application.Caller и на .DrawingObject . Больше склонен а каллеру которого нет в 2003. и возможно в 2007 Локализация - это вред!!!
Alex_ST, Можете проверить мой код на 2003? У меня подозрения и на Application.Caller и на .DrawingObject . Больше склонен а каллеру которого нет в 2003. и возможно в 2007 Локализация - это вред!!!bmv98rus
Замечательный Временно просто медведь , процентов на 20.
Сообщение отредактировал bmv98rus - Понедельник, 30.09.2019, 17:28
Итого Неча на 2003 пенять, коли макрос кривой. В файле из №2 Application.Caller дает только "Check Box 1" и "Check Box 2", все остальные - "Флажок №". Для трех флажков поправил (все лень) [vba]
Код
Sub CheckBoxClic() With ActiveSheet xx = .CheckBoxes(Application.Caller).Name
Select Case xx ' Case "Check Box 1" ' ' Case "Check Box 2" ' If ActiveSheet.Shapes("Check Box 1").DrawingObject.Value <> 1 Then _ ' .Value = False
Case "Check Box 3" ar = Array(4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) For Each ch In .CheckBoxes For i = 0 To UBound(ar) If Val(Mid(ch.Name, InStrRev(ch.Name, " "))) = ar(i) Then ch.Value = .CheckBoxes(Application.Caller).Value End If Next Next
Case "Check Box 4" ar = Array(7, 9, 11) For Each ch In .CheckBoxes For i = 0 To UBound(ar) If Val(Mid(ch.Name, InStrRev(ch.Name, " "))) = ar(i) Then ch.Value = .CheckBoxes(Application.Caller).Value End If Next Next
Case "Check Box 5" ar = Array(8, 10, 12) For Each ch In .CheckBoxes For i = 0 To UBound(ar) If Val(Mid(ch.Name, InStrRev(ch.Name, " "))) = ar(i) Then ch.Value = .CheckBoxes(Application.Caller).Value End If Next Next ' Case "Check Box 6", "Check Box 13", "Check Box 14", "Check Box 15" ' If ActiveSheet.Shapes("Check Box 3").DrawingObject.Value <> 1 Then _ ' .Value = False ' Case "Check Box 7", "Check Box 9", "Check Box 11" ' If ActiveSheet.Shapes("Check Box 4").DrawingObject.Value <> 1 Then _ ' .Value = False ' Case "Check Box 8", "Check Box 10", "Check Box 12" ' If ActiveSheet.Shapes("Check Box 5").DrawingObject.Value <> 1 Then _ ' .Value = False End Select End With
End Sub
[/vba]
Итого Неча на 2003 пенять, коли макрос кривой. В файле из №2 Application.Caller дает только "Check Box 1" и "Check Box 2", все остальные - "Флажок №". Для трех флажков поправил (все лень) [vba]
Код
Sub CheckBoxClic() With ActiveSheet xx = .CheckBoxes(Application.Caller).Name
Select Case xx ' Case "Check Box 1" ' ' Case "Check Box 2" ' If ActiveSheet.Shapes("Check Box 1").DrawingObject.Value <> 1 Then _ ' .Value = False
Case "Check Box 3" ar = Array(4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) For Each ch In .CheckBoxes For i = 0 To UBound(ar) If Val(Mid(ch.Name, InStrRev(ch.Name, " "))) = ar(i) Then ch.Value = .CheckBoxes(Application.Caller).Value End If Next Next
Case "Check Box 4" ar = Array(7, 9, 11) For Each ch In .CheckBoxes For i = 0 To UBound(ar) If Val(Mid(ch.Name, InStrRev(ch.Name, " "))) = ar(i) Then ch.Value = .CheckBoxes(Application.Caller).Value End If Next Next
Case "Check Box 5" ar = Array(8, 10, 12) For Each ch In .CheckBoxes For i = 0 To UBound(ar) If Val(Mid(ch.Name, InStrRev(ch.Name, " "))) = ar(i) Then ch.Value = .CheckBoxes(Application.Caller).Value End If Next Next ' Case "Check Box 6", "Check Box 13", "Check Box 14", "Check Box 15" ' If ActiveSheet.Shapes("Check Box 3").DrawingObject.Value <> 1 Then _ ' .Value = False ' Case "Check Box 7", "Check Box 9", "Check Box 11" ' If ActiveSheet.Shapes("Check Box 4").DrawingObject.Value <> 1 Then _ ' .Value = False ' Case "Check Box 8", "Check Box 10", "Check Box 12" ' If ActiveSheet.Shapes("Check Box 5").DrawingObject.Value <> 1 Then _ ' .Value = False End Select End With
Андрей, как говорит Тезка ваш - где ваши доказательства? Хотя очень может быть что локализация опять шутит. У меня все в 2016 и в 2013 все работает, но натыкался , когда различалось имя в RU и ENG интерфейсах, при этом файл тот же был.
Андрей, как говорит Тезка ваш - где ваши доказательства? Хотя очень может быть что локализация опять шутит. У меня все в 2016 и в 2013 все работает, но натыкался , когда различалось имя в RU и ENG интерфейсах, при этом файл тот же был. bmv98rus
Почему не получается применить макрос? Вроде модуль есть, вроде макрос туда вписал, вроде назначил макрос каждому флажку. А на выходе "0". Третью строку выделяет жёлтым цветом.
Открывал вложенный файл - работает. Прописал в него новые исправления - работает. Пере сохранил его в 2003 - работает. А в действующем - не работает. Ну не переносить же мне содержимое действующего файла в копию????
bmv98rus, А как быть с первым и вторым флагом, они что-то в ново-исправленном макросе не работают входит в ступор при включении флажка 1 на восьмой строчке.
Почему не получается применить макрос? Вроде модуль есть, вроде макрос туда вписал, вроде назначил макрос каждому флажку. А на выходе "0". Третью строку выделяет жёлтым цветом.
Открывал вложенный файл - работает. Прописал в него новые исправления - работает. Пере сохранил его в 2003 - работает. А в действующем - не работает. Ну не переносить же мне содержимое действующего файла в копию????
bmv98rus, А как быть с первым и вторым флагом, они что-то в ново-исправленном макросе не работают входит в ступор при включении флажка 1 на восьмой строчке.Gold_Barsik
Сообщение отредактировал Gold_Barsik - Вторник, 01.10.2019, 09:20
RAN, Вы пробовали замороженный хлеб? Это когда пекарня состряпала хлеб и решила с экономить на топливных ресурсах. Мол покупателю останется его разогреть минуток 20, ну а там что получится. Как говорится что бог пошлёт. Это я к тому что мне с ним делать? С макросом. Знать бы что туда ещё необходимо прописать. Я бы в пекари пошёл, пусть меня научат.
RAN, Вы пробовали замороженный хлеб? Это когда пекарня состряпала хлеб и решила с экономить на топливных ресурсах. Мол покупателю останется его разогреть минуток 20, ну а там что получится. Как говорится что бог пошлёт. Это я к тому что мне с ним делать? С макросом. Знать бы что туда ещё необходимо прописать. Я бы в пекари пошёл, пусть меня научат.Gold_Barsik
Сообщение отредактировал Gold_Barsik - Вторник, 01.10.2019, 09:09