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

Страницы: 1
Процедура нажатия кнопки срабатывает раньше чем проверка на корректность данных в Textbox_exit
 
Уважаемые знатоки, подскажите пожалуйста как решить проблему:

При вводе значений в Textbox (на форме) необходима проверка на наличие остатков данного материала, которую я выполняю с помощью процедуры Textbox_exit. Имеется кнопка "сохранить" - данные сохраняются на листе.
Если после ввода значения в Textbox перейти на какой нибудь элемент формы по табуляции (или мышкой на новую строку) Textbox_exit работает. Однако если после ввода значения в Textbox сразу мышкой нажать кнопку "сохранить" То процедура нажатия кнопки срабатывает раньше чем Textbox_exit.
Что у меня не правильно или как сделать, чтобы проверка все же проводилась?

Интуитивно понимаю, что нужно описать ту же процедуру и для мышки. Но не пойму какую.
Можно ли изменить цвет заголовка формы
 
Хотел бы чтобы пользователю напоминал цвет заголовка что он заполняет приход или расход. Цвет фона менять не хочется - уж очень наляписто.
Изменено: vsahno - 08.02.2019 20:08:58
Как сохранить все окна редактора VBA (модуля) чтобы в следующий раз открыть его в том же месте.
 
Пишу проект довольно большой. Куча модулей, форм. Возможно ли чтобы после окончания работы как-то сохранить место (модуль(/и) с которым я работал, чтобы на утро не тратить время на поиски места, где я был вчера и т.д. Чтобы открылись окна редактора модулей в том же виде и месте, в каком виде и где я их вчера оставил?
Как узнать адрес ячейки из которой только что вышел пользователь
 
Уважаемые знатоки. Хочу сделать проверку введенного пользователем значения в ОПРЕДЕЛЕННОЙ колонке . И если его нет в списке на другом  листе - добавить в список.
Событие ввода проверяю по
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column <> 2 And Target.Column <> 6 Then Exit Sub
'''    iCol = ActiveCell.Column
'''    iRow = ActiveCell.Row
'''    MsgBox " adress" & iRow & "," & iCol
    Call Добавить
End Sub

Однако iRow - дает уже новое значение строки.
Пользователь может выйти из ячейки и по <Tab> и по <Enter> И как Вы понимаете, если он перед этим несколько раз пользовался <Tab> то может оказаться где угодно А не в соседней ячейке.
Нашел на форумах:
Код
Function CellAddress()
  CellAddress = Application.ThisCell.Address
End Function

Но у меня 2007-й выдает ошибку. 1004 Метод ThisCell of object Application failed
Подскажите, пожалуйста, как решить проблему?
Проблема с глобальной переменной объявлена правильно в стандартном модуле. В другой книге на коде СТРАНИЦЫ ВБА ее не видит
 
Проблема в следующем. Мой проект стартует с файла Авторизация. В нем в стандартном модуле объявлена переменная mуVyzov (мойВызов). После авторизации макросом автоматически открывается нужный основной рабочий файл Работы_Мастерская . Из него я открываю из моего меню (попап) MyShortcut1 нужные мне файлы.   После завершении работы с файлом, я чаще всего должен автоматически вернуться в рабочий файл Работы_Мастерская. Однако есть файлы в которых я как бы "должен остаться". Для того чтобы я мог отследить нужно ли мне после работы с этим файлом вернуться или нет, я и сделал эту переменную. Однако не смотря на то, что она глобальная. В модуле СТРАНИЦЫ (sheets code) ВЫЗЫВАЕМОГО ФАЙЛА эту переменную ВБА не видит. Это стандартно? Или я что-то сделал не так?
Код
Option Explicit
Public myVyzov As Integer
' следующая процедура запускается из моего всплывающего меня myPopap из файла "Работы мастерская"

Sub Открыть_файл_Картотека() ' данная процедура в главном модуле проекта в файле Авторзация
'  открытие из Работы_мастерская 
    Dim LastRow As Long
    ChDir myDisk
    On Error Resume Next
    Set wb = Workbooks("Картотека".xlsm")
    If Err.Number <> 0 Then
        Workbooks.Open Filename:=myDisk & "\"Картотека".xlsm"        
        Workbooks("Картотека".xlsm").Sheets("Лист1").Visible = True
        Workbooks("Картотека".xlsm").Sheets("Внимание").Visible = False
    End If
    With Workbooks("Картотека".xlsm").Sheets("Лист1")
         LastRow = .Cells(.Rows.count, 1).End(xlUp).Offset(1, 0).Row
        .Cells(LastRow + 1, 1).Activate ' чтобы последние данные были в зоне видимости
    End With
    myVyzov = 1
End Sub


А теперь код страницы Работа мастерская откуда я запускаю:
Код
Private Sub Worksheet_BeforeRightClick(ByVal Target As Excel.Range, Cancel As Boolean)
        If Target.Column >= 1 And Target.Column < 8 Then
            CommandBars("MyShortcut1").ShowPopup
            Cancel = True
        End If
    If myVyzov = 0 Then ' VBA уже здесь не видит Паблик переменную. и при компиляции выдает ошибку. 
       '(Тогда я убрал в заголовке Option Explicit - перестал ругаться но значение стало Empty  :)
        Workbooks("Работа_Мастерская.xlsm").Worksheets("Лист1").Activate
    End If
    myVyzov = 0
End Sub

И код модуля книги Работа_мастерская
Код
Sub CreateShortcut1()
    Dim myBar As CommandBar
    Dim myItem As CommandBarControl
    Call    DeleteShortcut1
    Set myBar = CommandBars.Add _
      (Name:="MyShortcut1", Position:=msoBarPopup, Temporary:=True)
    ...
    Set myItem = myBar.Controls.Add(Type:=msoControlButton)
    With myItem
        .Caption = "&Отрыть картотеку"
        .OnAction = "Авторизация.xlsm!Открыть_файл_Картотека"
        .FaceId = 767
    End With
End Sub 

Нашел у Вас на форуме в архиве
ZVI написал, что глобальные переменный могут терять свои значения. Это получается тоже этот случай?
Хотя не замечал, чтобы другие глобальные переменные терялись. Хотя программа еще толком не тестировалась. Но так вроде основные функции работают. Вернее - Я так глубоко еще не копал.
Или ошибка у меня?
Если мой случай подпадает под описание ZVI, то подскажите, как проще можно решить данную проблему - отследить нужно вернуться или нет без глобальной переменной.
Заранее спасибо всем кто откликнется.
Excel 2007 , не всплывает мое контекстное меню в "умной" таблице
 
Excel 2007 , сделал свое контекстное меню типа "cell". Проблема в следующем: Данные организованы в виде "умной" таблицы. Мое меню прекрасно работает ЗА ПРЕДЕЛАМИ "умной" таблицы, НО НЕ всплывает В ПРЕДЕЛАХ  "умной" таблицы, а мне то как раз надо получить параметр из ячейки (вернее номер строки в которой расположена ячейка), в которой открывается меню! КТо встречался с подобной проблемой? Помогите пожалуйста!
Иногда VBA игнорирует команду Activate для страницы: Workbooks("Карта_ремонта.xlsm").Worksheets("Печать").Activate, Перед выводом формочки- запроса на количество листов печати мне необходимо показать пользователю страницу "Печать" чтобы он видел что пойдет на печать.
 
Перед выводом формочки- запроса на количество листов печати мне необходимо показать пользователю страницу "Печать" чтобы он видел: что пойдет на печать.
Workbooks("Карта_ремонта.xlsm").Worksheets("Печать").Activate
VBA ИНОГДА ее ВЫПОЛНЯЕТ а ИНОГДА НЕТ!!!
В пошаговом режиме отладки ВЫПОЛНЯЕТ ВСЕГДА!!!!!!!!!!!!
Вот кусочек кода:
Код
Workbooks("Карта_ремонта.xlsm").Worksheets("Печать").Visible = True
    Workbooks("Карта_ремонта.xlsm").Worksheets("Печать").Activate
       myformKol_Kopiy.Show
    Workbooks("Карта_ремонта.xlsm").Worksheets("Печать").Visible = False   
    Workbooks("Карта_ремонта.xlsm").Worksheets("Карта_ремонта").Activate
       myformKarta_Remontu.Show

Кто-нибудь встречался с такой проблемой? Что делаю не так?

Заметил закономерность:
Если в коде ПЕРЕД формирования вывода на печать произвожу СОХРАНЕНИЕ книги "Карта_ремонта"
Код
 Workbooks("Карта_ремонта.xlsm").Save

активация листа "Печать" игнорируется!!!
Если сохранения нет все нормально- пользователю показывает нужную страницу!
Подчеркиваю: в пошаговом режиме отладки  - все работает!!!
Изменено: vsahno - 24.09.2017 00:59:51 (Заметил закономерность ошибки)
Как правильно привязать кнопки к книге, чтобы макросы работали и у меня дома и в сети у пользователя?
 
Как правильно привязать кнопки к книге, чтобы макросы работали и у меня дома и в сети у пользователя?
Столкнулся с такой проблеммой:
пользователи для работы с программой должны открыть файл "авторизация"
ВСЕ макросы прописаны в этой книге. В этом файле кроме авторизации пользователя не содержиться больше никакой информации. Это сделано для облегчения установки обновлений.
Другие книги имеют кнопки для запуска макросов из книги "авторизация". Прописывать макросы в самих книгах можно, но тогда устанавливать обновления не удобно.

Однако столкнулся с проблемой. При отладке проекта у себя кнопки образуют связи с книгой : '\\PC\Учет_ремонта\Авторизация.xlsm"
В модуле "Авторизация" я меняю константу описывающую путь к файлам
с    Public Const myDisk As String = "\\Pc\Учет_ремонта"
на    Public Const myDisk = "\\Sekretar\Учет_ремонта"
Однако не знаю как изменить привязку к макросам у кнопок - у пользователя эти кнопки ищут связи с \\PC и не могут сами найти \\Sekretar
Просидел час у пользователя - поменял привязку кнопок к макросам через "\\Sekretar" - теперь дома просит чтобы вернул все обратно на \\PC
Подскажите, что сделал не так.
в классах ComboBox нет события Exit - как обойтись, НА форме большое количество элементов ComboBox (20) все обращаются к одному и тому же диапазону "Запчасти".
 
НА форме большое количество элементов ComboBox (20) все обращаются к одному и тому же диапазону "Запчасти".
Попробовал сделать модуль классов для них, Чтобы не писать одну и туже процедуру 20 раз. (Можно конечно же и так)
Но нет События Exit. Подскажите как обойтись.
Change не подходит, он реагирует на каждую букву. А мне надо, чтобы один раз проверил, и если такой запчасти нет То ввести ее и расширить диапазон "Запчасти"
(Чтобы в следующий раз не вводить) :)
___________________________________
* Глупости обычно совершаются с умным видом
На форме во всех TextBox должны вводится только цифры, как автоматизировать, не создавая процедуру для каждого?
 
На форме создаю в большом количестве ComboBox для запчастей и рядом TextBox для ввода количества (передача в мастерскую запчастей)

на форме во всех TextBox (а их 20 шт.) должны вводится только цифры. Если это возможно, пожалуйста подскажите: Как автоматизировать проверку на ввод цифр, не создавая процедуру для каждого.

(Не делал бы такой "ерунды" Но у меня Офис 2007, а у клиента в мастерской вообще 2003. Поэтому рад бы разместить на форме табл Excel, на не знаю как и чтобы потом не регистрировать в РЕГАХ. вдруг клиент Винду переустановит и т.д.)
ComboBox в форме, метод Change()
 
Пожалуйста, Помогите разобраться с работой ComboBox на форме. Необходимо вводить любые значения, и если его нет в именованном диапазоне - источнике добавлять введенное значение в этот диапазон.
Задача, дополнить выпадающий список путем добавления в конец именованного диапазона новое значение введенное с клавиатуры
Проблема: - при выборе из списка все работает.
однако при вводе с клавиатуры метод CHANGE() срабатывает уже на ввод первой буквы, а мне необходимо, чтобы он (метод) начинал работать, тогда, когда я закончил вводить текст  и нажал например "Enter" . В одном месте я вышел из положения тем что проверял количество символов по Len() Но здесь длина введенного текста может быть различна.
Изменено: vsahno - 24.07.2017 01:01:16
Страницы: 1
Наверх