2015-03-19 3 views
1

Я надеялся, что смогу получить помощь по проблеме VBA, с которой столкнулся, но сначала я хотел бы сказать, что я никоим образом не специалист VBA, ни где-либо рядом с этим ... Но я очень хочу учиться!VBA - IF ElseIf с .Visible = True/False

Я работаю с отчетами в MS Access 2010 и с использованием VBA, я скрываю нижний колонтитул 1 страницы и показываю другой, основанный на номере страницы. Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно сделать нижний колонтитул невидимым и невидимым дважды в отчете. Я пытался использовать IF ELSEIF, но он, похоже, не работает. Правильно ли этот код выглядит? Или я делаю что-то неправильно?

If Me.Page <= 2 Then 
    Me.PageFooter1.Visible = True 
    Me.PageFooter2.Visible = False 
ElseIf Me.Page >= 9 Then 
    Me.PageFooter1.Visible = True 
    Me.PageFooter2.Visible = False 
Else 
    Me.PageFooter1.Visible = False 
    Me.PageFooter2.Visible = True 
End If 

Благодарим за любую помощь заранее!

+1

Для любви к коду * переименуйте свои элементы управления * - как мы должны знать, какой из символов Text146 или Label233 должен быть чем? –

+0

Извините, я отредактировал выше. Надеюсь, теперь это имеет смысл ... – cryocaustik

+1

Надеюсь, вы также переименовали элементы управления в свой фактический код, ради того, кто будет его поддерживать =) –

ответ

2

Ну, первые два условия делают то же самое:

If Me.Page <= 2 Then 
    Me.PageFooter1.Visible = True 
    Me.PageFooter2.Visible = False 
ElseIf Me.Page >= 9 Then 
    Me.PageFooter1.Visible = True 
    Me.PageFooter2.Visible = False 

ли страница меньше или равно 2, или страница больше или равно 9, то:

Me.PageFooter1.Visible = True 
Me.PageFooter2.Visible = False 

в противном случае (так, если страница больше 2, но меньше 9):

Me.PageFooter1.Visible = False 
Me.PageFooter2.Visible = True 

это было бы перефразировать, как су ch:

If Me.Page <= 2 Or Me.Page >= 9 Then 
    Me.PageFooter1.Visible = True 
    Me.PageFooter2.Visible = False 
Else 
    Me.PageFooter1.Visible = False 
    Me.PageFooter2.Visible = True 
End If 

Но тогда это все еще выглядит странно. Похоже, у вас есть 2 "стили нижнего колонтитула". Как насчет введения этой концепции?

Dim showFooterStyle1 As Boolean 
showFooterStyle1 = (Me.Page <= 2 Or Me.Page >= 9) 

Me.PageFooter1.Visible = showFooterStyle1 
Me.PageFooter2.Visible = Not showFooterStyle1 

Теперь, независимо от того, что вы пытаетесь выполнить, довольно непонятно из вопроса, который вы задаете. Но по крайней мере должно быть легче увидеть, где проблема.

+0

Позднее работала отлично! Я не уверен, почему я не думал, чтобы Dim правил. Большое спасибо! Это поможет мне в будущем! – cryocaustik

+0

еще один вопрос; можно ли использовать этот метод при выполнении .CAPTION вместо .VISIBLE? – cryocaustik

+1

Он работает с одним присваиванием, потому что 'Visible' является' Boolean' - но да, вы можете легко использовать if/else для установки титров на основе таких правил. –