Страницы: 1
RSS
VBA: трабла с button.caption и visible
 
Если идти по написанному коду через F8, т.е. пошагово, все нормально работает, проверено: Лист Excel с большими ячейками. При нажатии на любую, сверху и снизу появляется 2 кнопки с разными именами. Нажимаем на след. ячейку, кнопки с предыдущей ячейки исчезают, на них через caption меняются слова на другие из списка, меняются координаты этих кнопок и они появляются над и под этой новой ячейкой. Думаю, ход событий понятен.  
 
Теперь трабла:  
На деле кнопки сначала меняют положение, т.е. исчезают, меняют координаты, появляются, а уже потом на них меняются имена. Видно сразу и это страшно раздражает.  
 
По коду:  
Private Sub Worksheet_SelectionChange(ByVal target As Range)  
...  
   'Прячем кнопки через другую процедуру с помощью visible=false  
  Call Показать(0, 0, 0, 0, 0, False)  
   'задаем имена  
  CommandButton1.Caption = Имя 1й кнопки  
  CommandButton2.Caption = Имя 2й кнопки  
   'передаем в другую процедуру координаты ячейки и даем команду показать кнопки  
  With target  
     Call Показать(.Top, .Left, .Width, .Height, target, True)  
  End With  
...  
end sub  
 
Понять, из-за чего так происходит, я до сих пор не в состоянии. Мож кто что подскажет.
 
Попробуйте на время перемещения кнопок отключать обновление экрана:  
 
Application.ScreenUpdating = False  
' код  
Application.ScreenUpdating = True  
 
 
Хотите готовое решение - выкладывайте ВЕСЬ код (а лучше файл с кодом)
 
Спасибо, что напомнил об этой команде, но она тож не помогает. Пробовал использовать wait на секунду, но таж самая фигня. Главное, что пошагово все как по маслу, а при обычном выполнении caption'ы на кнопках меняются уже после того как эти самые кнопки появляются.
Страницы: 1
Читают тему
Наверх