Страницы: 1
RSS
перенос значения с userform на элемент управления на листе
 
Добрый вечер! Прошу помощи в решении следующей ситуации: в книге excel есть userform и лист со множеством элементов управления типа checkbox. По нажатию на кнопку на userform происходит перенос данных на лист, в частности, установление "галочек" сообразно значениям контролов userform.  
Как правильно обратиться к элементу упрваления на листе? Делая по аналогии с формами листа получаю ошибку "невозможно получить свойство checkboxex объекта класса worksheet":  
If IM_GO.ob_sobstv = True Then Sheets("Заявление").CheckBoxes(26).Value = 1  
 
Прошу прощения, если вопрос глупый, но самостоятельно найти решение мне не удалось :(
 
На моём примере:  
 
Then Sheets("Заявление").DrawingObjects("Check Box 1").Value = 1  
 
Название так определил:  
Sub tt()  
Dim c  
For Each c In ActiveSheet.DrawingObjects  
Debug.Print c.Name  
Next  
End Sub
 
Хотя название видно и наверху слева в строке где адреса ячеек...
 
{quote}{login=Hugo}{date=14.11.2011 06:37}{thema=}{post}Хотя название видно и наверху слева в строке где адреса ячеек...{/post}{/quote}  
 
Названия я знаю сразу - в верхнем левом углу и смотрю.  
Ваша строка также выдает ошибку, только теперь "невозможно получить свойство DrawingObjects объекта класса worksheet" :(
 
В моём файле всё работает!
 
{quote}{login=Black__Hole}{date=14.11.2011 06:25}{thema=перенос значения с userform на элемент управления на листе}{post}Как правильно обратиться к элементу    
упрваления на листе?({/post}{/quote}  
так в соседней вашей теме вы это делали
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
{quote}{login=nerv}{date=14.11.2011 07:05}{thema=Re: перенос значения с userform на элемент управления на листе}{post}{quote}{login=Black__Hole}{date=14.11.2011 06:25}{thema=перенос значения с userform на элемент управления на листе}{post}Как правильно обратиться к элементу    
упрваления на листе?({/post}{/quote}  
так в соседней вашей теме вы это делали{/post}{/quote}  
 
В соседней теме мы циклом проверяли тип элемента и при совпадении с нужным устанавливали свойству enabled значение false. А теперь у меня не получается обратиться к каждому конкретному элементу, имя которого мне изначально известно.  
Ну, например: мне надо checkbox 1 поставить в true, а checkbox 21 в false. И так 61 раз в порядке возрастания нумерации.  
Это не было проблемой, пока я на листе использовала не элементы управления, а формы. Но тут у меня элементы управления и обращение к ним, как к формам, не выходит.
 
Так у меня и был элемент управления.  
Уж точно не Forms - у него имя CheckBox1 и в строке формул    
=EMBED("Forms.CheckBox.1";"")  
Если я правильно понял, что за формы.  
В общем, нарисуйте пример с Вашими элементами и разберёмся.
 
может все-таки пример?
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
ибо код Hugo вполне рабочий. Или имеется в виду это?  
 
Sub io()  
MsgBox ActiveSheet.Shapes("Флажок 1").Name  
End Sub
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
{quote}{login=nerv}{date=14.11.2011 07:27}{thema=}{post}может все-таки пример?{/post}{/quote}  
 
Сделала пример. Схема аналогична оригинальному файлу. Нажимать на кнопку "Сформировать"
 
Да, два дополнения: в примере код не изменен по совету Hugo - я на оригинальном файле попробовала на одной строке и наткнулась на ошибку, еще забыла убить обработчики событий от стертых элементов..
 
Black__Hole, вы указываете в примере слишком мало строчек кода, в пример нужно вставлять файл с десятками тысяч строчек кода, чтобы нам было сложнее понять и разобраться в нём. Желательно так, чтобы мы успели выйти на пенсию и только лишь потом осознать весь смысл вашего примера.
 
{quote}{login=}{date=14.11.2011 07:51}{thema=}{post}Black__Hole, вы указываете в примере слишком мало строчек кода, в пример нужно вставлять файл с десятками тысяч строчек кода, чтобы нам было сложнее понять и разобраться в нём. Желательно так, чтобы мы успели выйти на пенсию и только лишь потом осознать весь смысл вашего примера.{/post}{/quote}  
 
Обработчики событий элементов на листе не относились к моему вопросу - поэтому я совершенно забыла их удалить. Но в данном случае никакой смысловой нагрузки они не несут - их можно удалить. Что я и сделала во вложенном файле.
 
А вообще спасибо за блистательный юмор - это один из любимых побочных эффектов обращения на сайт: отличное настроение и повод быть внимательнее :)
 
спасибо, что вы воспринимаете мои колкости как шутки, я не специально.... мы работаем с вашим примером... как только что-то получится, мы обязательно отпишемся.
 
Не пойму, в чем проблема, Вам Hugo уже давно ответил  
 
Sub io()  
MsgBox ActiveSheet.DrawingObjects("CheckBox33").Name  
End Sub
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
см. файл
 
Нет, мой ответ рассчитан на другие чекбоксы - ActiveX, теперь с примером всё ясно.  
Я там потом ниже написал:  
"Так у меня и был элемент управления.  
Уж точно не Forms - у него имя CheckBox1 и в строке формул    
=EMBED("Forms.CheckBox.1";"")"  
Ну разобрались наконец... :)  
А с этим хто-то справился - напишу для поиска:  
 
Sheets("Заявление").OLEObjects("CheckBox33").Object.Value = True
 
Sub Form()  
With Sheets("Заявление")  
If IM_GO.cb_a1 = True Then .OLEObjects("CheckBox29").Object.Value = True  
End With  
End Sub
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
\так почти идентичный код я здесь приводил. Автора он не устроил)  
http://www.planetaexcel.ru/forum.php?thread_id=34123  
 
вот и пойми этих, авторов : )
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Урра! Спасибо!!!!!  
nerv, я ж говорила, что у меня проблемы с синтаксисом: не могла я из Вашего примера обращения в цикле  
(Sub io()  
Dim x As Object  
For Each x In ActiveSheet.OLEObjects  
If TypeOf x.Object Is MSForms.CheckBox Then  
MsgBox x.Name  
End If  
Next  
End Sub)  
понять, как написать "индивидуальное" обращение.  
 
Спасибо всем за терпимость и помощь!
Страницы: 1
Читают тему
Наверх