2016-03-28 4 views
1

Может ли кто-нибудь объяснить мне, почему, когда именно один из них записывает свойства окна книги в коде ниже.vba windows (1) свойство рабочей книги

Я нашел в книге это объявление, его цель - подсчитать все видимые книги, и я не понимаю, почему это написано в скобках. Спасибо заранее.

Public Function lCountVisibleWorkbooks() As Long 

    Dim lCount As Long 
    Dim wkbBook As Workbook 
    For Each wkbBook In Application.Workbooks 
     If wkbBook.Windows(1).Visible Then 
      lCount = lCount + 1 
     End If 
    Next wkbBook 
    lCountVisibleWorkbooks = lCount 
End Function 

ответ

0

Мне кажется, что это проверка первого окна каждой книги. Он хочет проверить, нет ли видимых книг, прежде чем предпринимать действия. В книге может быть несколько окон. Это будет проверять только первое.

3

Вы можете использовать New Window кнопку ленты (в View вкладки), чтобы создать дополнительные окна для книги:

New Window

Book1 has 4 windows

Если книга имеет 4 открытые окна, его коллекция Workbooks будет содержать 4 объекта - вы можете проверить, что в ближайшей панели (Ctrl + G):

?ThisWorkbook.Windows.Count 
4 

Ваш код взят-в-книга есть ошибка: он не возвращает число видимых книг, как он утверждает. Скорее, он возвращает количество книг, где видно окно 1.

Держите 4 окна открыты, и скрыть первый один:

ThisWorkbook.Windows(1).Visible = False 

Window1 is hidden now

Это все еще там, и ThisWorkbook до сих пор видны ... но ваша функция будет считать, что учебное пособие «невидимая «потому что первое окно скрыто.


(1) Это является индекс, индекс - это синтаксис VBA для доступа элементов в массиве или коллекции.

Dim items As New Collection 
items.Add "a" 
items.Add "b" 
items.Add "c" 
Debug.Print items(1) 'prints "a" 

Windows представляет собой коллекцию свойство Workbook объекта, содержащий Window экземпляры объектов - так wkbBook.Windows(1) обращается первый объект этой коллекции. (MSDN)

Примечание стороны, сделайте себе одолжение и падение, что нижний регистр l венгерский префикс для Long - это венгерская нотация больно читаемость. Используйте имена идентификаторов, которые вы можете произнести, и сохраняйте функции/процедуры в 10 строках, вам не понадобятся плохие мнемоники, чтобы понять, что к чему.

+0

Благодарим вас за подробный ответ. интересно читать. – Oliver

Смежные вопросы