2016-01-12 4 views
1

У меня есть около 20 флажков, выложенных в прямоугольник. Как узнать, в каком порядке мой код проходит через них с циклом For Each?Какой порядок для каждого следующего цикла через мои флажки

Я уже подтвердил, что это не в порядке CheckBox1, CheckBox2, CheckBox3 и т.д.

+0

Как выглядит ваш код? Вы можете использовать 'F8' для перехода через свой макрос, чтобы посмотреть, какой он есть (можете ли вы использовать что-то вроде' checkBox.Select'?). Я думаю, что по умолчанию он будет в порядке, добавленном в книгу. – BruceWayne

+1

Вы можете посмотреть индекс вкладки в режиме разработки –

+0

Я могу видеть, в каком порядке это происходит Я просто не знаю, что такое свойство. @BruceWayne, любая идея о том, как я могу изменить порядок, если он в том порядке, в котором они были добавлены? –

ответ

4

Для ActiveX галочек выложенных на листе, то < правой кнопкой мыши >, команда Order устанавливает порядок их извлекается в строке For ... Каждый цикл. Предостережение состоит в том, что команды кажутся обратными.

checkbox_order

  1. Bring to Front будет поместить объект формы в хвостовой части для каждой очереди.
  2. Send to Back приведет объект формы к передней части каждой очереди.
  3. Bring Forward будет перетасовывать объект формы обратно в одном месте в очереди.
  4. Send Backward будет толкать объект формы вперед в одном месте в очереди.

VBA для этого находится в Shape.ZOrder method.

With Worksheets("Sheet1") 
    .Shapes("CheckBox2").ZOrder msoBringForward '<~~ send back one place in the queue 
    .Shapes("CheckBox2").ZOrder msoSendToBack '<~~ place at the beginning of the queue 
End With 

Используйте Shape.ZOrderPosition property, чтобы определить текущее положение.

+0

Ничего себе! Как ты это узнал? –

+1

Элементы управления формы, которые я использую, обычно располагаются непосредственно на листе. Я помню эту странность (обратное направление), когда я пытался создать каскад флажков, где каждый из них зависел от состояния предыдущего. Было много флажков, и мне нужно было выяснить, как это сделать в цикле. Я на самом деле потратил немало времени на «конец», задаваясь вопросом: «Почему это не работает», пока я не попробовал среднюю и не понял, что они меняют инструкции. Направление ZOrder, которое они берут, вероятно, имеет смысл для кого-то, но не для меня. – Jeeped

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