Новости:

К первому сообщению темы должен быть прикреплен файл примера в формате xls*.
Приложив пример, Вы избавите себя и других от вопросов типа "А какой критерий?", "А куда выводить результат?", "А сколько строк?" и все тех же просьб выложить файл. Рисовать за Вас Ваши же таблички с заданиями, а затем и решение к ним, никто желанием не горит. Да и, как показывает практика, в большинстве случаев без файла решения не найти.

Главное меню

Управление сгруппированными элементами Active X с помощью VBA

Автор Dr_Lex, 21.04.2015, 01:11

« назад - далее »

Dr_Lex

Проблема в следующем. Необходимо с помощью макроса задавать начальные значения чекбоксов. Но часть из них сгруппированы, дабы не расползались (они должны располагаться в определённых местах над картинкой). Чекбоксы, которые не сгруппированы управляются без проблем, а при попытке обратиться к этим макрос даёт сбой. Как это можно обойти?

NooBasTiK

Цитировать2. К первому сообщению темы должен быть прикреплен файл примера в формате xls*.
Приложив пример, Вы избавите себя и других от вопросов типа "А какой критерий?", "А куда выводить результат?", "А сколько строк?" и все тех же просьб выложить файл. Рисовать за Вас Ваши же таблички с заданиями, а затем и решение к ним, никто желанием не горит. Да и, как показывает практика, в большинстве случаев без файла решения не найти.
Прикрепить к сообщению можно только файлы gif,jpg,rar,zip,7z,bas,frm,cls,docx,xlsx,xls размером до 1000 Кб.
Прикрепить файл можно в полной форме ответа на сообщение. Под окном для ввода сообщения нажмите на знак "+" возле текста "Дополнительные опции..."

Dr_Lex

Я поэтому и писал этот вопрос в продолжении изначальной темы. Там и файл был. Хотя не вижу, зачем он здесь, но раз надо, прикрепляю.

cheshiki1


Dr_Lex

#4
Попробовал вставить такой код
    With Worksheets("Оформление груза")
        .Me.CheckBox21.Value = False
        .Me.CheckBox22.Value = False
    End With

Но результат тот же. Макрос останавливается и требует отладки кода.
P.S. А что за оператор Me? Не нашёл его в справке.
P.P.S. Пробовал с помощью макроса сначала разгруппировать, а после выполнения действий сгруппировать заново, но макрос получается одноразовый. При каждой группировке получается новый номер группы, а так как таких групп несколько, и задействуются при разных макросах, получается, что даже счётчик номера группы сделать нельзя.

cheshiki1

#5
точки перед Ме не нужно.
Ме - обращение (моя книга). тоже самое что This (текущая книга)
П.С. писал же в прошлой теме что кнопки не рабочие, зачем тот же файл цеплять.
ЦитироватьWhen you create a new application-level project for Excel, Visual Studio automatically creates a ThisAddIn.vb or ThisAddIn.cs code file. You can access the Application object by using Me.Application or this.Application.

Dr_Lex

Не совсем понял, что значит кнопки не рабочие? Там всего одна кнопка и у меня она работает, запускает макрос.
Вывел обращение к галочкам из выражения With и убрал точки, то есть теперь просто:
    Range("B3").Select
    ActiveCell.FormulaR1C1 = _
        "='Вспомогательные расчёты'!R[10]C+'Вспомогательные расчёты'!R[12]C"
    Range("B5").Select
    ActiveCell.FormulaR1C1 = _
        "=IF('Вспомогательные расчёты'!R[-4]C,0,'Вспомогательные расчёты'!R[-3]C)"
    Range("B7").Select
    Selection.ClearContents
    Me.CheckBox21.Value = False
    Me.CheckBox22.Value = False
    With Worksheets("Оформление груза")
        .OLEObjects("ComboBox21").Object.ListIndex = 0
        .OLEObjects("OptionButton21").Object.Value = True
        .OLEObjects("OptionButton22").Object.Value = False
        .OLEObjects("OptionButton23").Object.Value = False
        .OLEObjects("OptionButton24").Object.Value = False
    End With
    Range("B12").Select

Но теперь макрос даже не запускается, сразу появляется надпись:
Compile error:
Invalid use of Me keyword
Насколько я понимаю, сие обозначает, что VBA не понимает такое обращение Me, либо я его как-то не так задаю.

cheshiki1

ЦитироватьНе совсем понял, что значит кнопки не рабочие?
уточняю - элементы ActiveX не реагируют на мышь.
такое чувство что это вообще картинки. хотя в режиме конструктора обзываются как нужно.
сохраните в xlsm и заархивируйте для выкладывания на форум.

Dr_Lex

Может у вас отключены макросы, специально скачал с форума файл, у меня всё работает. На всякий случай заливаю с изменённым расширением (архиватора нет). Просто поменяйте расширение с .rar на .xlsm

cheshiki1

т.к. у вас все элементы связаны с ячейками то пойдем другим путем.
Sub Новый_заказ()
    Range("B3").FormulaR1C1 = _
        "='Вспомогательные расчёты'!R[10]C+'Вспомогательные расчёты'!R[12]C"
    Range("B5").FormulaR1C1 = _
        "=IF('Вспомогательные расчёты'!R[-4]C,0,'Вспомогательные расчёты'!R[-3]C)"
    Range("B7").ClearContents
    Range("B8") = 1
    With Worksheets("Вспомогательные расчёты")
    .Range("B1,B3,B8,B9,B10") = False
    .Range("B7") = True
    End With
    Range("B12").Select
End Sub


Dr_Lex

Вот я балбес! Даже не подумал подойти с этой стороны. Спасибо огромное, всё получилось!