Уважаемые знатоки, подскажите пожалуйста как решить проблему:
При вводе значений в Textbox (на форме) необходима проверка на наличие остатков данного материала, которую я выполняю с помощью процедуры Textbox_exit. Имеется кнопка "сохранить" - данные сохраняются на листе. Если после ввода значения в Textbox перейти на какой нибудь элемент формы по табуляции (или мышкой на новую строку) Textbox_exit работает. Однако если после ввода значения в Textbox сразу мышкой нажать кнопку "сохранить" То процедура нажатия кнопки срабатывает раньше чем Textbox_exit. Что у меня не правильно или как сделать, чтобы проверка все же проводилась?
Интуитивно понимаю, что нужно описать ту же процедуру и для мышки. Но не пойму какую.
Пишу проект довольно большой. Куча модулей, форм. Возможно ли чтобы после окончания работы как-то сохранить место (модуль(/и) с которым я работал, чтобы на утро не тратить время на поиски места, где я был вчера и т.д. Чтобы открылись окна редактора модулей в том же виде и месте, в каком виде и где я их вчера оставил?
Уважаемые знатоки. Хочу сделать проверку введенного пользователем значения в ОПРЕДЕЛЕННОЙ колонке . И если его нет в списке на другом листе - добавить в список. Событие ввода проверяю по
Код
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 , сделал свое контекстное меню типа "cell". Проблема в следующем: Данные организованы в виде "умной" таблицы. Мое меню прекрасно работает ЗА ПРЕДЕЛАМИ "умной" таблицы, НО НЕ всплывает В ПРЕДЕЛАХ "умной" таблицы, а мне то как раз надо получить параметр из ячейки (вернее номер строки в которой расположена ячейка), в которой открывается меню! КТо встречался с подобной проблемой? Помогите пожалуйста!
Иногда VBA игнорирует команду Activate для страницы: Workbooks("Карта_ремонта.xlsm").Worksheets("Печать").Activate, Перед выводом формочки- запроса на количество листов печати мне необходимо показать пользователю страницу "Печать" чтобы он видел что пойдет на печать.
Перед выводом формочки- запроса на количество листов печати мне необходимо показать пользователю страницу "Печать" чтобы он видел: что пойдет на печать. Workbooks("Карта_ремонта.xlsm").Worksheets("Печать").Activate VBA ИНОГДА ее ВЫПОЛНЯЕТ а ИНОГДА НЕТ!!! В пошаговом режиме отладки ВЫПОЛНЯЕТ ВСЕГДА!!!!!!!!!!!! Вот кусочек кода:
Кто-нибудь встречался с такой проблемой? Что делаю не так?
Заметил закономерность: Если в коде ПЕРЕД формирования вывода на печать произвожу СОХРАНЕНИЕ книги "Карта_ремонта"
Код
Workbooks("Карта_ремонта.xlsm").Save
активация листа "Печать" игнорируется!!! Если сохранения нет все нормально- пользователю показывает нужную страницу! Подчеркиваю: в пошаговом режиме отладки - все работает!!!
Как правильно привязать кнопки к книге, чтобы макросы работали и у меня дома и в сети у пользователя? Столкнулся с такой проблеммой: пользователи для работы с программой должны открыть файл "авторизация" ВСЕ макросы прописаны в этой книге. В этом файле кроме авторизации пользователя не содержиться больше никакой информации. Это сделано для облегчения установки обновлений. Другие книги имеют кнопки для запуска макросов из книги "авторизация". Прописывать макросы в самих книгах можно, но тогда устанавливать обновления не удобно.
Однако столкнулся с проблемой. При отладке проекта у себя кнопки образуют связи с книгой : '\\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 не подходит, он реагирует на каждую букву. А мне надо, чтобы один раз проверил, и если такой запчасти нет То ввести ее и расширить диапазон "Запчасти" (Чтобы в следующий раз не вводить) ___________________________________ * Глупости обычно совершаются с умным видом
На форме создаю в большом количестве ComboBox для запчастей и рядом TextBox для ввода количества (передача в мастерскую запчастей)
на форме во всех TextBox (а их 20 шт.) должны вводится только цифры. Если это возможно, пожалуйста подскажите: Как автоматизировать проверку на ввод цифр, не создавая процедуру для каждого.
(Не делал бы такой "ерунды" Но у меня Офис 2007, а у клиента в мастерской вообще 2003. Поэтому рад бы разместить на форме табл Excel, на не знаю как и чтобы потом не регистрировать в РЕГАХ. вдруг клиент Винду переустановит и т.д.)
Пожалуйста, Помогите разобраться с работой ComboBox на форме. Необходимо вводить любые значения, и если его нет в именованном диапазоне - источнике добавлять введенное значение в этот диапазон. Задача, дополнить выпадающий список путем добавления в конец именованного диапазона новое значение введенное с клавиатуры Проблема: - при выборе из списка все работает. однако при вводе с клавиатуры метод CHANGE() срабатывает уже на ввод первой буквы, а мне необходимо, чтобы он (метод) начинал работать, тогда, когда я закончил вводить текст и нажал например "Enter" . В одном месте я вышел из положения тем что проверял количество символов по Len() Но здесь длина введенного текста может быть различна.