2015-06-05 2 views
2

Добрый день!Кнопка Creeping ActiveX

У меня есть кнопка ActiveX (которая привязана в позиции в зависимости от количества строк сверху), которая запускает код VBA для вставки заданного количества копируемых строк в определенную точку. Сам код работает отлично, но кнопка «клонирует» сама и накладывается на положение новых строк, хотя я установил Application.ScreenUpdating = False. После обновления экрана снова, экран обновляется, и клоны исчезают.

я отслеживали его вниз на одну строку кода: Selection.Insert Shift:=xlDown

После работает эта линия, кнопка клонировали.

Например, если я добавил 3 пустые строки с помощью этого макроса, кнопка выглядит как этот раз команда выше выполняется, пока подпрограмма не закончена:

enter image description here

Чтобы сделать это более интересно, такое поведение не было, когда я использовал Excel 2010. Я обновился до Excel 2013 на днях, и теперь эта проблема возникает.

Любые мысли?

+1

У меня есть фотография того, как он выглядит, но у меня нет репутации, чтобы опубликовать его. – CalTATU

+2

Отправьте ссылку на imgur, и я смогу поставить для вас фото – chancea

+1

Спасибо за предложение! Я смог получить репутацию, необходимую для публикации. – CalTATU

ответ

0

У меня есть опыт аналогичного поведения, когда Application.ScreenUpdating = False. Я не думаю, что для этого есть хороший ответ. Насколько я знаю, есть обходные пути.

Скорее всего, вы нажимаете кнопку вверх или вниз со вставкой и когда Application.ScreenUpdating = Ложные вещи все еще «вид» обновления. Если вы хотите, чтобы он ушел, вы могли бы попробовать несколько вещей.

  1. Установите для экрана значение true до вставки, а затем обратно в значение false после вставки, чтобы вы не получили свои «клоны».
  2. Переместите кнопку после вставки.
  3. Удалить свои кнопки, вставить, а затем перерисовать их.
  4. Использование меньше ресурсов компьютера между вставкой и Application.ScreenUpdating = True, упрощая код и т.д.

Или разместить код (как упрощено, но демонстрирует проблему), исполняемой между тем, когда вы вставляете и когда вы Application.ScreenUpdating = True.

Я надеюсь, что это поможет.