Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Помогите оптимизировать код, Пытаюсь сократить код формы, нужно решение
 
Мне не супер критично уменьшить кол-во кода, если потребуются кардинальные изменения, тогда эту затею оставлю.
Просто думал, может быть я очевидно неправильно что-то делаю и есть способы попроще.
Помогите оптимизировать код, Пытаюсь сократить код формы, нужно решение
 
Добрый день!

Программирование на VBA осваиваю методом научного тыка.
Есть программа, на форме куча кнопок, которые по нажатию скрывают определенные строки в таблице.
При этом есть определенная зависимость, если включены одни кнопки, то некоторые другие должны быть неактивны и наоборот.
Вот пример кода только для одной кнопки, а их два десятка, соответственно огромное кол-во кода. Думаю можно как-то решить вопрос по-другому, но моих знаний не хватает, прошу помощи.

Код
Private Sub ButAC_Change()

If ButAC.Value = False Then           
       Range("blokac").EntireRow.Hidden = True
       ButAC.Caption = "Âêë."
       ButAM.Enabled = True
      If ButAM.Value = False Then
      If ButSA.Value = False Then
      If ButSAR.Value = False Then
      If ButSG05.Value = False Then
      If ButSQ.Value = False Then
      If ButSQR.Value = False Then
      If ButSQEX.Value = False Then
      If ButSQREX.Value = False Then
         ButACEX.Enabled = True
         ButAMEXC.Enabled = True        
         ButSAEX.Enabled = True
         ButSAREX.Enabled = True
         ButSGEXC.Enabled = True
         ButSQREX.Enabled = True
         ButSQEX.Enabled = True
          
      End If
      End If
      End If
      End If
      End If
      End If
      End If
      End If
      
   Else
       Range("blokac").EntireRow.Hidden = False
       ac
       ButAC.Caption = "Âûêë."
       ButACEX.Enabled = False
       ButAMEXC.Enabled = False
       ButSAEX.Enabled = False
       ButSAREX.Enabled = False
       ButSGEXC.Enabled = False
       ButSQREX.Enabled = False
       ButSQEX.Enabled = False
       ButAM.Enabled = False
   
   End If

End Sub
 
Вставить таблицы из разных файлов Excel в шаблон Word
 
lexey_fan, немного не то, но спасибо за старание!

Работа выполнена, всем спасибо за участие!!!
Вставить таблицы из разных файлов Excel в шаблон Word
 
Почитал, исправил.
Вставить таблицы из разных файлов Excel в шаблон Word
 
Прикрепил файлы примера.
Бюджет пару тысяч рублей.

Обезличил пример и убрал лишнее.
Изменено: Евгений - 09.04.2014 16:15:08
Вставить таблицы из разных файлов Excel в шаблон Word
 
Добрый день!

Есть шаблон Word, обычное коммерческое предложение - вверху листа шапка с наименованием организации, внизу условия поставки. Это стандартно.
Есть файлы Excel с расчетами, в них стандартная таблица, определенного размера.
Необходимо, чтобы при запуске макроса Word, в указанное место в шаблоне поочередно скопировались все таблицы из файлов Excel, лежащих в этой же папке. Одна за одной, очередность не важна (таблиц может быть от одной до нескольких десятков).

Идеальный вариант:
1) Чтобы перед началом копирования, можно было выбрать какие именно эксель-файлы брать и из какого каталога.
2) После копирования просуммировать значения последних ячеек каждой таблицы и записать сумму ниже в шаблоне.

Жду Ваших мыслей и предложений.
Достойное решение готов оплатить.
Изменить размер выделенного диапазона, Макрос выделяет определенный диапазон, нужно уменьшить его на одну строку
 
Добрый день!

Ситуацию следующая - есть именованный диапазон, макрос выделяет его и копирует в буфер.
Код
Private Sub ButCopy_Click()
Range("copymassive").Select
Selection.Copy
End Sub
 
Проблема в том, что некоторые части этого диапазона могут быть скрыты, получается выделяется только то, что не скрыто в данный момент.
Мне нужно, чтобы после того как видимая часть выделилась, уменьшить размер этого выделения ровно на одну строку сверху. Т.е. из выделения убрать самую верхнюю видимую строку.

Буду благодарен за помощь.
Пример к сожалению пока нет возможности выложить.
Перебрать диапазон циклом, Нужно скрыть строки на Листе2, номера которых указаны в таблице на листе1.
 
V
Очень доходчиво   :)  

Спасибо большое!
Перебрать диапазон циклом, Нужно скрыть строки на Листе2, номера которых указаны в таблице на листе1.
 
Sergei_A
Я честно говоря саму основу не пойму, что мне нужно перебирать.

Лист2.Rows(n).Hidden = True
Это у нас будет само действие цикла.
Нам получается нужно перебирать строки и извлекать данные из них, верно?
Перебрать диапазон циклом, Нужно скрыть строки на Листе2, номера которых указаны в таблице на листе1.
 
Добрый день!

Только начинаю изучать циклы, а сейчас уже есть конкретная задача. Хотел бы на конкретном примере разобрать.
На одном листе у нас есть диапазон определенного размера (1 столбец, 10 строк). В нем находятся номера строк, которые необходимо скрыть на листе 2.
Нужно чтобы цикл прошелся по диапазону и скрыл эти строки на втором листе. Пустые ячейки пропускаем. В ячейке может быть либо номер строки либо пусто, другого не дано.

Как скрыть нужную строку я знаю, а вот перебрать циклом пока не получается.

Буду благодарен за помощь.
Найти в чем проблема за вознаграждение, Залипают горячие клавиши
 
SendKeys сработало  :)
Видимо я раньше неправильно делал.
Спасибо)

Напишите номер тел. в личку, с меня вознаграждение ;)
Найти в чем проблема за вознаграждение, Залипают горячие клавиши
 
Ну мышь тут не причем.
На счет не происходит - попробуйте раз пять проделать - открыть закрыть форму, выбрать разные кнопки, у меня тоже не всегда происходит

Цитата
nerv пишет:
Как вариант SendKeys {Ctrl} на закрытий формы.
А об этом я думал уже, по-моему даже пробовал, ничего не вышло.
Сейчас еще раз попробую.
Найти в чем проблема за вознаграждение, Залипают горячие клавиши
 
Может у меня в коде чего-то не хватает?
Найти в чем проблема за вознаграждение, Залипают горячие клавиши
 
Нет, залипание в Windows отключена, в том то и беда. Происходит это на разных независимых компьютерах.
Попробую еще раз объяснить чтобы стало понятней.
Запускаю файл, нажимаю горячие клавиши Ctrl - Backspace (у меня макрос на них настроен, открытие формы), запускается форма, на которой я могу выбирать разные блоки таблицы. Выбрал нужный блок, закрываю форму. И тут любое мое дальнейшее действие - например покрутить колесом мыши - вызывает эффект, как будто у меня нажата клавиша Ctrl, т.е. вместо прокрутки окна у меня прокручивается масштаб и т.п..  Если однократно нажать эту самую Ctrl, то все становится нормально. Т.е. грубо говоря, когда я нажимаю горячие клавиши для вызова формы, они у меня как бы залипают, пока я не нажму опять контрол. И что самое интересное бывает это не каждый раз, а периодически, причем не поддается никакой логике.
Найти в чем проблема за вознаграждение, Залипают горячие клавиши
 
Добрый день!

Ситуация следующая - в файле вызываются формы, одна сочетанием клавиш "Ctrl-Backspace", вторая "Shift-F1".
Все срабатывает, но после закрытия формы, открывается приложение (видимость приложения отключается на момент показа формы) и иногда (1 из 10 раз где-то) если начинаешь работать с таблицей, видно что залипла клавиша Ctrl или Shift (в зависимости какая комбинация нажималась ранее). Например крутишь колесом мыши и вместо прокрутки окна изменяется масштаб и т.п. Проблема исчезает при однократном нажатии клавиши Ctrl или Shift соответственно.
Как избавиться от этой проблемы?

Private Sub Workbook_Activate()
Application.OnKey Key:="^{BACKSPACE}", Procedure:=Me.CodeName & ".UserForm_Show"
Application.OnKey Key:="+{F1}", Procedure:=Me.CodeName & ".UserForm3_Show"
End Sub

Private Sub Workbook_Deactivate()
Application.OnKey Key:="^{BACKSPACE}"
Application.OnKey Key:="+{F1}"
End Sub

Private Sub UserForm_Show()
Application.Visible = False
UserForm1.Show

End Sub


Private Sub UserForm3_Show()
UserForm3.Show
End Sub

Во вложении пример. Не обращайте внимание на мертвые ссылки, т.к. я удалил все остальные листы (данные конфиденциальны). Все что нужно здесь работает.
Нужно нажать CTRL-Backspace, выскочит форма, где нужно выбрать любые другие кнопки и закрыть ее. Потом сразу же покрутить колесом. Через 4-5 попыток (нажатия гор.клавиш) происходит залипание, независимо от выбранных кнопок или еще чего и вместо прокрутки окна происходит прокрутка масштаба, пока не нажмешь Ctrl.
Залипание горячих клавиш, После использования горячих клавиш иногда они залипают
 
Решение до сих пор не найдено...
Залипание горячих клавиш, После использования горячих клавиш иногда они залипают
 
Во вложении пример. Не обращайте внимание на мертвые ссылки, т.к. я удалил все остальные листы (данные конфиденциальны). Все что нужно здесь работает.
Нужно нажать CTRL-Backspace, выскочит форма, где нужно выбрать любые другие кнопки и закрыть ее. Потом сразу же покрутить колесом. Через 4-5 попыток (нажатия гор.клавиш) происходит залипание, независимо от выбранных кнопок или еще чего и вместо прокрутки окна происходит прокрутка масштаба, пока не нажмешь Ctrl.
Изменено: Евгений - 18.01.2013 14:14:31
Залипание горячих клавиш, После использования горячих клавиш иногда они залипают
 
Тем более это бывает не все время, а лишь иногда. В чем и странность.
Залипание горячих клавиш, После использования горячих клавиш иногда они залипают
 
Залипание в винде отключено конечно
Залипание горячих клавиш, После использования горячих клавиш иногда они залипают
 
А сам код у меня верно написан?
Просто я еще не особо силен в VBA, код увидел где-то здесь на форуме и применил.
Залипание горячих клавиш, После использования горячих клавиш иногда они залипают
 
К сожалению, проблема как минимум на двух разных компьютерах.
Залипание горячих клавиш, После использования горячих клавиш иногда они залипают
 
Добрый день!

Ситуация следующая - в файле вызываются формы, одна сочетанием клавиш "Ctrl-Backspace", вторая "Shift-F1".
Все срабатывает, но после закрытия формы, открывается приложение (видимость приложения отключается на момент показа формы) и иногда (1 из 10 раз где-то) если начинаешь работать с таблицей, видно что залипла клавиша Ctrl или Shift (в зависимости какая комбинация нажималась ранее). Например крутишь колесом мыши и вместо прокрутки окна изменяется масштаб и т.п. Проблема исчезает при однократном нажатии клавиши Ctrl или Shift соответственно.
Как избавиться от этой проблемы?

Private Sub Workbook_Activate()
Application.OnKey Key:="^{BACKSPACE}", Procedure:=Me.CodeName & ".UserForm_Show"
Application.OnKey Key:="+{F1}", Procedure:=Me.CodeName & ".UserForm3_Show"
End Sub

Private Sub Workbook_Deactivate()
Application.OnKey Key:="^{BACKSPACE}"
Application.OnKey Key:="+{F1}"
End Sub

Private Sub UserForm_Show()
Application.Visible = False
UserForm1.Show
End Sub


Private Sub UserForm3_Show()
UserForm3.Show
End Sub
Страницы: 1
Наверх