2013-12-04 1 views
0

Я новичок в VBA и постараюсь сделать свой вопрос понятным. Я хочу добавить еще один оператор If Else, чтобы сказать, когда нажата кнопка ИЛИ, это должно быть для некоторых других вещей. Итак, мой вопрос заключается в том, что я должен что-то закодировать в Private Sub OR_Click() ... End Sub, а затем ссылаться на него в своем новом заявлении If Else?Как ссылаться на кнопку в Do While внутри оператора If Else в доступе VBA

If .RecordCount > 0 Then 
    .MoveFirst 
    Do While Not .EOF 
     If Filter Is Nothing Then 
      Set Filter = XFormToFilter.FilterBuilder 
      Filter.SetPrimaryFilter PrimaryFilter, primaryTable, primaryKey 
     End If 
     'This is where I want the button to go 

     Filter.AddSubFilter "Filter" & .fields("ID"), _ 
      filterString, targetTable, subformDict(targetTable) 
     .MoveNext 
    Loop 
End If 

Спасибо!

+0

Непонятно, где этот код вызывается. Вызывается ли она с другой кнопки? –

+0

@ Zev Spitz Отличная точка! Да, это называется с помощью кнопки фильтра. –

+0

Фильтр должен отличаться в зависимости от того, отмечена ли кнопка переключения «ИЛИ» или нет - я правильно понимаю? –

ответ

2

Вы должны создать кнопку переключения в дизайнере формы (а не стандартную кнопку). Каждый элемент управления имеет общий Name, доступ к которому будет установлен, если вы его не измените - что-то вроде ToggleButton115. Вы можете написать код в обработчике фильтра, как это:

If ToggleButton15 Then 
    'OR option has been set; change the filter appropriately 
Else 
    'OR option has not been set 
End If 

NB: Это работает, потому что Value собственность ToggleButton является True или False в зависимости от того, был ли он переключен или нет. Свойством Value является свойство по умолчанию - свойство VBA предполагает, что вы хотите использовать, когда вы не укажете свойство объекта.

Для получения более подробной информации см. here.

+0

Спасибо за ваше четкое объяснение! –