2015-08-14 6 views
2

Я просмотрел интернет и не могу найти других, имеющих эту же проблему.Хранение строк breaks activeX опции buttons.located на этих строках

У меня есть таблица с несколькими группируемыми блоками опций ActiveX. Пользователь должен спуститься по электронной таблице и выбрать опции из полей (обычно да нет). Код просто скрывает строки, которые пользователь не должен отвечать на основании своих предыдущих вариантов. Пример кода:

Private Sub OptionButton3_Click() 
'High School Diploma YES Option 

    Application.ScreenUpdating = False 
    Sheets("Sheet1").Rows("18:38").Hidden = True 
    Application.ScreenUpdating = True 

End Sub 

Private Sub OptionButton4_Click() 
'High School Diploma NO Option 

    Application.ScreenUpdating = False 
    Sheets("Sheet1").Rows("18:38").Hidden = False 
    Application.ScreenUpdating = True 
End Sub 

Моя проблема, когда я отобразите один из этих строк (например, пользователь изменяет значение «Да» на «Нет») в optionboxes ACTIVEX, которые ранее были скрыты теперь unclickable, и впоследствии нецелесообразно. У кого-нибудь есть идеи, что вызывает это и как его исправить?

Я даже пытался самостоятельно прятать блоки управления, прежде чем прятать строки, но я получил тот же результат

(ActiveSheet.Shapes.Range(Array("Group 1", "Group 2", "Group 3")).Visible = False) 

Довольно новый для управления, так что не уверен, если я делаю очевидную ошибку здесь. любая помощь очень ценится.

+0

У кого-нибудь еще был опыт работы с этой проблемой? Я не могу понять, как заставить кнопки activeX работать после того, как они были скрыты. – Rookz

ответ

1

Итак, я играл с этим в течение нескольких дней, и это то, что я узнал:

Если кнопка ACTIVEX (OptionButton, флажок, и т.д.) установлен в положение «Move и Size with cells ", он разбивается всякий раз, когда ячейки, на которых он находится, скрыты. Кнопка больше не может быть нажата (или щелкнуть правой кнопкой мыши) и не может быть восстановлена ​​каким-либо образом.

Я пробовал несколько методов для скрытия строк (физически выбирал строки правой кнопкой мыши и скрывал, используя команды VBA «EntireRow.Hidden = True» и используя команду vba «скрывать строки с помощью VBA RowHeigt = 0», .) Во всех случаях, когда строка не указана, и кнопка снова отображается, она больше не доступна.

Обход, который я нашел, заключается в изменении настроек кнопки activeX на «не перемещать и не изменять размер с ячейками». Затем, когда скрываются строки с VBA код, добавить дополнительный код, чтобы скрыть кнопку

ActiveSheet.OLEObjects("OptionButton1").Visible = False 

Это не идеально, но это, кажется, по крайней мере, дать внешний вид кнопок прятался с остальной частью содержания строки.

+0

Поведение, которое вы описываете, не для меня (с Excel 2013). Обратите внимание, что в окне VBA каждый объект кнопки activex optin имеет свойство «GroupName». Именно это следует использовать для группировки объектов, чтобы они включали и выключали друг друга. Используете ли вы это, или вы выбрали бутоны и добавили их в группу «shape», выбрав группу правого клика? – HarveyFrench

0

Я попытался это:

Я имел две кнопки выбора в строке 1 на sheet1. Ниже приведен код из модуля sheet1.

Я использовал процедуру HideOrShowRow, чтобы скрыть или показать строку.

Обе кнопки-опции имели свой правый клик> управление форматом> свойства> Свойство позиционирования объекта, установленное на «Перемещение и размер с ячейками».
Это то, что позволяет спрятать элемент управления со строкой - так что, я думаю, вы должны это сделать уже.

В любом случае, это сработало нормально для меня. Тем не менее, я подозреваю, что у вас есть две кнопки выбора для каждого вопроса. ДА и НЕТ. Они должны переключаться друг на друга, как показано ниже.

Обратите внимание, что после того, как кнопка выбора имеет «галочку» в ней, вы не можете щелкнуть ее, чтобы отменить ее. Другая кнопка выбора должна сделать это! (т. е. как мой код ниже)

Не имея этого в вашем коде, возможно, что-то связано с вашей проблемой.

Кроме того, каждый элемент управления ADo имеет свойство enabled. если для этого параметра установлено значение false, пользователь не сможет изменить свое значение или выбрать элемент управления. Похоже, что они стали фальшивыми? Но как!

Private Sub Q1_no_Click() 

    MsgBox "hi" 
    Me.Q1_No.Value = Not Me.Q1_yes.Value 

End Sub 


Private Sub Q1_yes_Click() 

    Me.Q1_yes.Value = Not Me.Q1_No.Value 

End Sub 


Sub HideOrShowRow() 

    Me.Range("A1").EntireRow.Hidden = Not Me.Range("A1").EntireRow.Hidden 

End Sub 
+0

Спасибо за быстрый ответ! Я использовал флажки activeX (добавлен с помощью функции «Вставка» со вкладки разработчика). Я использовал кнопки actionX над кнопками формы. После того как я вставлен, я щелкнул правой кнопкой мыши два поля и использовал параметр «Группа», чтобы они автоматически переключались при активации другого окна. Поэтому, если я выбираю «Да», то не отменяется - без необходимости использования дополнительного кода. Эта функциональность работает отлично, пока я не скрою строку с представленными вариантами. когда-то неявный, я больше не могу выбирать окно с параметрами. Имеет ли это смысл? – Rookz