Доброе. Имеется код который убирает крестик в UserForm. Возможно ли его доработать так, что бы заголовок UserForm выравнивался по центру имел шрифт "Times New Roman", жирный, размер 14.
Код
Private Const GWL_STYLE As Long = -16& 'для установки нового вида окна
Private Const GWL_EXSTYLE = -20& 'для расширенного стиля окна
Private Const WS_CAPTION As Long = &HC00000 'определяет заголовок
Private Const WS_BORDER As Long = &H800000 'определяет рамку формы
'Функции API, применяемые для поиска окна и изменения его стиля
#If VBA7 Then
Private Declare PtrSafe Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr
Private Declare PtrSafe Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long) As LongPtr
Private Declare PtrSafe Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Private Declare PtrSafe Function DrawMenuBar Lib "User32" (ByVal hwnd As LongPtr) As Long
#Else
Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function DrawMenuBar Lib "user32.dll" (ByVal hwnd As Long) As Long
#End If
Sub NoQueryClose(FormName As String)
Dim ihWnd, hStyle
'ищем окно формы среди всех открытых окон
If Val(Application.Version) < 9 Then
ihWnd = FindWindow("ThunderXFrame", FormName) 'для Excel 97
Else
ihWnd = FindWindow("ThunderDFrame", FormName) 'для Excel 2000 и выше
End If
'получаем информацию о найденном окне(стили и т.д.)
hStyle = GetWindowLong(ihWnd, -16&)
'убираем кнопку крестика
SetWindowLong ihWnd, -16&, hStyle And Not &H80000
End Sub
Доброе. У меня не получается с помощью кода создать TextBox и ограничить ввод символов. Подскажите, как реализовать? Так же нужно, что бы во время ввода пропадал Label1 а если TextBox пустой Label1 появлялся.
Доброе, помогите реализовать идею. В файле Word Есть UserForm в которой имеются TextBox (Фамилия, имя, отчество), так же две кнопки, "Добавить" и "База". Каким образом можно сделать что бы при нажатии кнопки добавить ФИО сохранялось в Excel а при нажатии кнопки База открывается еще окно со списком ранее сохранённых ФИО при выборе нужного человека, TextBox заполняется выбранными данными.
Доброе. Решил поделиться своим решение автоматического форматирования даты в TextBox. Возможно кому-то пригодится. Так же выкладываю для обсуждения и критики. Я не очень опытный в плане написания кода так что возможно код окажется примитивным. Буду рад любой критике и любым предложениям по доработке.
Из возможностей: Возможно вводить только цифры, точку и подчёркивание При нажатии кнопки Tab сразу вставляется текущая дата Так же если ввести число и нажать Tab то сразу вставляется текущий месяц и год Там есть еще много разных комбинаций, в общем тестируйте кому интересно)
Единственная проблема которую не смог решить это авто постановка точек. Желаемый результат: что бы при вводе 2 и 5-го символа точка ставилась сразу, однако в таком варианте не получается потом точку удалить в случае необходимости. Текущий результат: точка делит цифры на части при попытке ввести 3 и 6-й символ, в таком случае пользователь может сам нажимать всегда точку и даже не узнать что мог этого не делать)
Добрый вечер Уважаемые форумчане. Подскажите как ревизовать. На UserForm находится ComboBox в который необходимо вводить определённые данные если данные не верны то при переходе к следующему ComboBox появляется MsgBox. Однако в той ситуации когда введены не верные данные а пользователь просто хочет закрыть UserForm это уведомление не нужно. Хочу в событие Exit из ComboBox добавить проверку на предмет закрытия UserForm, если UserForm закрыто то Exit sub.
Или возможно в Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) прописать что-то что не позволит выполнять какие либо действия другим объектам
Доброго Помогите реализовать. В UserForm есть TextBox в который пользователь должен ввести дату. Идея заключается в том, когда человек ввел число, например 12 то сразу автоматом ставится точка, потом он вводит 10 и так же подставляется точка, дальше может быть два развития события либо человек написал 2019 и его курсор автоматический переводится на следующий TextBox или он просто пишет 19 и перейдя на следующий TextBox либо с помощью Tab или курсором 12.10.19 переделывается в 12.10.2019. Так же нужно что бы можно было писать только цифры и подчеркивание "_".
Доброе Уважаемые форумчане. Меня мучает один вопрос и я решил спросить опытных людей.
У меня есть много текстбоксов в итоге их будет около 30 в каждом текст боксе буду свои правила форматирования текста. Вопрос в следующем. В данном случае есть ли смысл в переменных? я имею в виду не глупо будет присваивать переменной txt_surname, как вообще делают в таких случаях опытные люди?
Код
Dim Фамилия As String = txt_surname.Text
плохо что я использую русские имена для переменных? есть ли в этом смысл, возможно в такой ситуации переменная это просто лишнее? возможно такое действие благотворно влияет на программу и операции будут проходить быстрее?
В качестве примера приведу программный которым я сейчас занимаюсь (особая благодарность Ігор Гончаренко)
Код
' *****************************************************************************
' ComboBox Кызы \ Оглы
'
Private Sub cbo_kz_og_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If cbo_kz_og.Text = "" Then lbl_kz_og.Visible = True
End Sub
Private Sub cbo_kz_og_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyTab Then Exit Sub
If lbl_kz_og.Visible = True Then lbl_kz_og.Visible = False
End Sub
' *****************************************************************************
' TextBox Фамилия
'
Private Sub txt_surname_Enter()
ВключитьРусскуюРаскладку
End Sub
Private Sub txt_Surname_Change()
If txt_surname.Text <> "" Then txt_surname.Text = Up1Letter(txt_surname.Text)
End Sub
Private Sub txt_Surname_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If txt_surname.Text = "" Then lbl_surname.Visible = True
txt_surname = Trim(txt_surname)
End Sub
Private Sub txt_surname_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyTab Then Exit Sub
If lbl_surname.Visible = True Then lbl_surname.Visible = False
If KeyCode = vbKeyDelete Then
If txt_surname > "" Then
txt_surname.Value = ""
End If
End If
End Sub
' *****************************************************************************
' TextBox Имя
'
Private Sub txt_name_Enter()
ВключитьРусскуюРаскладку
End Sub
Private Sub txt_name_Change()
If txt_name.Text <> "" Then txt_name.Text = Up1Letter(txt_name.Text)
End Sub
Private Sub txt_name_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If txt_name.Text = "" Then lbl_name.Visible = True
End Sub
Private Sub txt_name_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyTab Then Exit Sub
If lbl_name.Visible = True Then lbl_name.Visible = False
If KeyCode = vbKeyDelete Then
If txt_name > "" Then
txt_name.Value = ""
End If
End If
End Sub
Доброго. Помогите реализовать. Нужно что бы при появление UserForm в TextBox1,2,3,4 были надписи Фамилия, Имя, Отчество, Дата рождения. --Текст серый и полупрозрачный. --Как только нажимаешь на поле или переходишь на поле с помощью Tab текст пропадает и вводишь то, что нужно. --Если в поле нечего не вводилось, то текст с информацией должен появиться снова. --Так же в TextBox Фамилия, Имя, Отчество нужно сделать, так что бы первая буква автоматический становилась заглавной, а другие строчными (на случай если регистр перепутал). --В поле дата рождения нужно, что бы текст сам подгонялся под формат дата, к примеру, если я написал 2101999 или 2 11 1999 или 02 октября 1999 а так же 02октября1999 после перехода на другое поле с помощью Tab или курсора мыши введенное значение должно стать 02.10.1999 --в случае когда в это поле было введено любое другое значение, которое ни как не связано с датой, на 5 сек. должно появиться всплывающее уведомление о том, что формат даты не верен, автоматически заполняем поле датой 11.04.1992, фокус на поле дата рождения и выделяем весь текст в поле, начиная с левого края. --Нужно чтобы исправления, например, в поле Фамилия происходили сразу, как перешёл на другое поле с помощью Tab ли курсора мыши.
Так же есть просьба.... в коде писать описание что делается и зачем.
Доброго и с Наступающим. Помогите реализовать. В UserForm есть ComboBox добавил в него значения с помощью такой формулы
Код
Private Sub UserForm_Initialize()
ComboBox1.List = Array("Capella", "DIY Flavor Shack", "Flavor West", "Flavorah", "Inawera")
End Sub
Как в таком случае добавить новые элементы в Userform и удалить старые, а так же добавить предупреждение что в списке такой элемент уже присутствует? Мне нужно что бы не было связи ни с диапазоном ни с ячейками.
Доброе. Нашел на просторах интернета такой вариант. Подскажите как сделать так что бы данное действие работала и с ComboBox1, ComboBox2, ComboBox3 и т.д. Заранее спасибо)
Код
Private Sub UserForm_Initialize()
ComboBox1.AddItem "Иванов"
ComboBox1.AddItem "Петров"
ComboBox1.AddItem "Сидоров"
Dim i As Integer
On Error Resume Next
i = CInt(ThisDocument.Variables("ComboboxLastChoice").Value)
If Err.Number <> 0 Then Err.Clear
ComboBox1.ListIndex = i
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim var As Variable
For Each var In ThisDocument.Variables
If var.Name = "ComboboxLastChoice" Then
Exit For
End If
Next
If var Is Nothing Then
ThisDocument.Variables.Add "ComboboxLastChoice", ComboBox1.ListIndex
Else
var.Value = ComboBox1.ListIndex
End If
End Sub
Прошу прощения за такое количество вопросов. Есть таблица с информацией в ней пункты приема, сотрудники и улицы которые они обслуживают. На другом листе выподающй список. Хочу сделать так,что бы при выборе из выпадающего списка определенного пункта показывалось какие сотрудники там работают и какие дома они обслуживают. Многие скажут что тут мульти ВПР подойдет. Частично да. Из за того что фамилии часто повторяются результат от мульти ВПР не тот что я хотел. Помогите решить задачу) Заранее спасибо)
Доброе. У меня есть таблица, в первом столбце Фамилии людей, во втором Станции метро. Один человек должен поехать на несколько станций. Я сделал выпадающий список с фамилиями. Хочу что бы при выборе фамилии из выпадающего списка в определённых ячейках появлялись станции на которые он должен ехать. Помоги пожалуйста реализовать идею. Гугл не помог(((
Доброе. У меня есть много много заполненных строк в виде ссылок на разные ячейки. Возможно ли выделить все ячейки и разом их сделать абсолютными или придётся каждую выделять и нажимать F4?
Нужен человек который хорошо понимает vba word и Excel так как возможно все будет взаимно связано. Самое сложное в том что нужно будет не просто сделать проект но и объяснить мне как все работает так как на его основе я буду делать другие подобные документы. Все вопросы в личку.
Есть у меня два взаимосвязанных выпадающих списка. Выбираю улицу, дома. Нужно сделать так что бы по этим данным выпадал нужный судебный участок его адрес и прочее. Подскажите как такое реализовать.
Доброе. Знаю что можно сделать такой зависимый список http://www.planetaexcel.ru/techniques/1/38/ . Но мне нужно что бы список был AciveX так как там более гибкие настройки. Реально сделать списки AciveX зависимыми как по ссылке выше.
Доброе. Помогите сделать макрос для сохранения Листа (Рапорт) в отдельный файл xls таким образом что бы не было связей и формул а только текст. Кнопка сохранить будет располагаться на листе (Заполнить). Нужно сделать так что бы Лист сохранялся с именем из ячейки (В2). В той папке где находится Книга (Пример) создавалась папка Рапорт а если такая папка есть то сохранялось в нее. Еще хотелось бы такой же макрос для сохранения в Формате PDF. И вопрос реально ли сохранить Лист как docx? В макросах я не разбираюсь(. Так что если не затруднит пишите подробнее. Заранее Спасибо)
Добрый. В одной ячейке указываю время. Нужно сделать так что бы в других ячейках это время прибавлялось на 15 минут больше. Столкнулся с проблемой. Не знаю как сделать что бы часы прибавлялись после того как минут больше 60. Прикрепил файл так как я скорее всего не понятно описал проблему)
Доброе. У меня бланк. Расположение строк нарушить не могу. Нужно сделать так... когда текст не влезает в ячейку, та часть что не влезает переносилась в другую ячейку. Прикрепил файл прмером.
Доброе. Мне нужно что бы нажатием одной кнопки)) Печатались 3 страницы односторонней печатью с полями с лева 3 см., права 1 см., верх и низ 2 см. Потом 6 страниц двухсторонняя печать с полями с лева 2 см., право 1 см., верх и низ 1 см. и снова 3 листа односторонней печатью. Это реально реализовать? и что бы печатать можно было на любом пк. В макросах мало понимаю если не сложно пишите подробно с пояснениям какая команда что означает)
Доброго. Подскажите как реализовать идею.... есть 10 листов некоторые из них нужно печатать односторонней печатью а некоторые двух сторонней. Хочется упростить себе жизнь))) И делать это одним нажатием кнопки. Как написать такой макрос?
Есть таблица которая не вмещается в экран поэтому «Print Screen» не помогает и это не удобно... Удобнее сделать скрин только нужной области. Подскажите какие варианты есть?
У меня Office 2013. Есть формула в которой участвуют пустые ячейки офис считает их нулем... в 2003 такого не было он просто не считал по формуле. Как мне сделать что бы было как в 2003? может там в настройках что то сделать?
Хотелось бы сделать так что бы в ячейке например А1 Был написан текущий месяц и что бы он обновлялся с наступлением нового! Помогите реализовать заранее спасибо.
Мне надо сделать задания в инст... там написано зайдите Меню - Сервис - Поиск решения.... я такую функцию не обнарушил и попытался её вкл. У меня выскочиило окно о том что такого компанента нет и предложение его установить я выбрал установить но пишет то что сервис недоступен... что теперь делать??? У меня офис 2003.
Здравствуйте помогите подалуйста.... подскажите как можно в ваподающем списке вписать значение которого не.... а то он мне пишет что нельзя.... а мне надо что бы я моб легко дату изменить в этом списке...
Здравствуйте.... Подскажите пожалуйста как сделать так... Что бы открываешь файл и там в любой ячейке поевляется сегодняешняя дата..... а потом вписываеешь в другую ячейку ну например 7 лет и он показовает сколько там дней получается с учётом весакосного года... Ну тоесть 5.12.12 вписал 7 лет и он пишет с этого числа по 5.12.19 дней получается... Зарание спасибо))) Если можно то файл с прикрепите)
Здравствуйте!!! Как сделать так что бы в одной ячейке можно было выберать значение... Ну там поевляется с боку ячейки стрелака на неё нажимаешь и можно выбрать кпримеру 1, 2,3 ит.д ну то что туда впишешь то и выбрать можно! Не помню как делать помогите!) Зарание спасибо)