VBA не организует мои книги, если один или несколько свернуты - PullRequest
0 голосов
/ 31 января 2020

Я пишу кусок кода, чтобы упорядочить книги в плитках. Но я хочу сделать это для нескольких избранных открытых книг.
Способ, которым я go об этом говорю, заключается в том, что я oop просматриваю все открытые книги, а те, которые не удовлетворяют условию, сводятся к минимуму.
Excel не имеет проблем с этим, когда я делаю это вручную, зайдя в Вид -> Упорядочить -> Плитка .
Он упорядочивает только не минимизированные книги.

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

Dim wb As Workbook

For Each wb in Workbooks
   If (condition) Then
      wb.Windows(1).WindowState = xlMinimized
   End If
Next wb

Windows.Arrange xlArrangeStyleTiled

Опять же, Arrange работает, если количество свернутых книг равно нулю.
Кроме того, проблема, похоже, связана только с мозаичным стилем расположения. Для вертикальной, горизонтальной или каскадной программы программа не возражает против минимизации рабочих книг и работает так, как ожидается.
Однако я хочу, чтобы рабочие книги были упорядочены в виде плиток.

Редактировать:
Вот пример, иллюстрирующий назначение этой программы.
Допустим, у меня есть 5 открытых рабочих книг. В настоящее время я работаю с книгами 1, 2 и 3 и хочу видеть их одновременно на экране. Рабочие тетради 4 и 5 на данный момент не имеют отношения к мне, поэтому я не хочу, чтобы они занимали место на экране, когда я размещаю свои рабочие тетради. Поэтому рабочие книги 4 и 5 будут сведены к минимуму, так что мой экран будет разделен между рабочими книгами 1, 2 и 3, когда я их составлю.

1 Ответ

0 голосов
/ 31 января 2020

При использовании метода Windows .Arrange существует второй необязательный параметр, позволяющий определить, включены ли все windows в «расположение» или только видимые windows активной рабочей книги. Хотя я знаю, что FALSE означает значение по умолчанию, я видел, что явное использование FALSE может привести к разбиению всех windows. Поэтому, возможно, попробуйте:

ThisWorkbook.Windows.Arrange xlArrangeStyleTiled, False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...