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

Страницы: 1 2 3 4 След.
Выравнивание и редактирование заголовка UserForm
 
Доброе. Имеется код который убирает крестик в 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 и разрешить вводить только цифры
 
Доброе. У меня не получается с помощью кода создать TextBox и ограничить ввод символов. Подскажите, как реализовать?
Так же нужно, что бы во время ввода пропадал Label1 а если TextBox пустой Label1 появлялся.
Создать новую книгу и сохранить как скрытый файл
 
Спасибо огромное, это то что нужно.
Весь интернет облазил ни как не мог найти решения)
Создать новую книгу и сохранить как скрытый файл
 
Доброе, имеется код который проверяет наличие файла и если файла нет то он создаёт его, однако мне нужно что бы файл был скрытым. Как это сделать?
Код
    If Len(Dir$(ThisDocument.Path & "/" & "Data.xlsx", vbHidden)) > 0 Then
        MsgBox ("Файл существует!")
    Else
        Workbooks.add
        Application.Visible = False 'Делаем запуск приложения невидимым
        'Вставляем данные
        Worksheets(1)
        Range("A1").Value = "Фамилиё"
        Range("B1").Value = "Имя"
        Range("A1:B1").Font.Bold = True
        Range("A2").Value = "Doe"
        Range("B2").Value = "John"
        'Отключаем системные сообщения
        Application.DisplayAlerts = False
        'Сохраняем книгу
        Workbooks.SaveAs ThisDocument.Path & "/" & "Data.xlsx"
        'Включаем системные сообщения
        Application.DisplayAlerts = True
        'Закрываем книгу
        Workbooks.Quit
    End If
Обмен данными из UserForm Word с Excel
 
Доброе, помогите реализовать идею. В файле Word Есть UserForm в которой имеются TextBox (Фамилия, имя, отчество), так же две кнопки, "Добавить" и "База". Каким образом можно сделать что бы при нажатии кнопки добавить ФИО сохранялось в Excel а при нажатии кнопки База открывается еще окно со списком ранее сохранённых ФИО при выборе нужного человека, TextBox заполняется выбранными данными.
Автоматическое форматирование даты в TextBox
 
Доброе.
Решил поделиться своим решение автоматического форматирования даты в TextBox. Возможно кому-то пригодится.
Так же выкладываю для обсуждения и критики. Я не очень опытный в плане написания кода так что возможно код окажется примитивным.
Буду рад любой критике и любым предложениям по доработке.

Из возможностей: Возможно вводить только цифры, точку и подчёркивание
При нажатии кнопки Tab сразу вставляется текущая дата
Так же если ввести число и нажать Tab то сразу вставляется текущий месяц и год
Там есть еще много разных комбинаций, в общем тестируйте кому интересно)

Единственная проблема которую не смог решить это авто постановка точек.
Желаемый результат: что бы при вводе 2 и 5-го символа точка ставилась сразу, однако в таком варианте не получается потом точку удалить в случае необходимости.
Текущий результат: точка делит цифры на части при попытке ввести 3 и 6-й символ, в таком случае пользователь может сам нажимать всегда точку и даже не узнать что мог этого не делать)
Запрет показа MsgBox при закрытии UserForm
 
Цитата
Шит написал:
возможно в UserForm_QueryClose обработку сказать что бы он дальше не шёл?)))
Нашёл решение, всё оказалось очень просто  :D  8)
Код
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

End

End Sub
Всем спасибо за помощь)
Запрет показа MsgBox при закрытии UserForm
 
Нашёл решение
Код
If VBA.UserForms.Count = 1 Then Exit Sub

Однако это не помогло.

Когда я нажимаю крестик до обработчик заходит в  Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

а потом идёт в Private Sub txt_StartedData_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

возможно в UserForm_QueryClose обработку сказать что бы он дальше не шёл?)))

Запрет показа MsgBox при закрытии UserForm
 
Добрый вечер Уважаемые форумчане.
Подскажите как ревизовать.
На UserForm находится ComboBox в который необходимо вводить определённые данные если данные не верны то при переходе к следующему ComboBox появляется MsgBox.
Однако в той ситуации когда введены не верные данные а пользователь просто хочет закрыть UserForm это уведомление не нужно.
Хочу в событие Exit из ComboBox добавить проверку на предмет закрытия UserForm, если UserForm закрыто то Exit sub.

Или возможно в Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
прописать что-то что не позволит выполнять какие либо действия другим объектам

подскажите пожалуйста как прописать такое.
Изменено: vikttur - 27.09.2021 21:48:03
Автокоррекция ввода даты в TextBox
 
Кому интересно Идею реализовал...
Автокоррекция ввода даты в TextBox
 
Думаю по такому вопросу это не принципиально)))  
Автокоррекция ввода даты в TextBox
 
Доброго
Помогите реализовать.
В 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
Авто форматирование TextBox
 
Задание отдано на выполнение.
Авто форматирование TextBox
 
Logistic, не вижу ничего плохого в том что я на разных форумах одно и тоже пишу.... часто бывает что в одном месте ни кто не ответил а в другом очень бурная дискуссия началась...
Авто форматирование TextBox
 
Доброго.
Помогите реализовать.
Нужно что бы при появление UserForm в TextBox1,2,3,4 были надписи Фамилия, Имя, Отчество, Дата рождения.
--Текст серый и полупрозрачный.
--Как только нажимаешь на поле или переходишь на поле с помощью Tab текст пропадает и вводишь то, что нужно.
--Если в поле нечего не вводилось, то текст с информацией должен появиться снова.
--Так же в TextBox Фамилия, Имя, Отчество нужно сделать, так что бы первая буква автоматический становилась заглавной, а другие строчными (на случай если регистр перепутал).
--В поле дата рождения нужно, что бы текст сам подгонялся под формат дата, к примеру, если я написал 2101999 или 2 11 1999 или 02 октября 1999 а так же 02октября1999 после перехода на другое поле с помощью Tab или курсора мыши введенное значение должно стать 02.10.1999
--в случае когда в это поле было введено любое другое значение, которое ни как не связано с датой, на 5 сек. должно появиться всплывающее уведомление о том, что формат даты не верен, автоматически заполняем поле датой 11.04.1992, фокус на поле дата рождения и выделяем весь текст в поле, начиная с левого края.
--Нужно чтобы исправления, например, в поле Фамилия происходили сразу, как перешёл на другое поле с помощью Tab ли курсора мыши.

Так же есть просьба.... в коде писать описание что делается и зачем.
ComboBox с добавлением новых элементов в Userform
 
Гениально))) А по поводу удаления... как удалить из списка не нужную запись?
Изменено: Шит - 30.12.2018 15:29:00
ComboBox с добавлением новых элементов в Userform
 
Юрий М, Буду довольствоваться этим))) Однажды наберусь достаточно знаний и опыты и смогу программно менять значения в ComboBox)))
ComboBox с добавлением новых элементов в Userform
 
Юрий М, Я не хочу захламлять листами свой проект. Плюс ко всему такого способа в гугле не нашел и стало интересно возможно ли это))) Видимо Вариантов не много либо масив либо реестр... но в реестре хранить не удобно но это было интересно)
ComboBox с добавлением новых элементов в Userform
 
А возможно программно изменить код? на подобие как тут.
Просто что бы при нажатие "+" в UserForm_Initialize() Добавлялось строка ComboBox1.AddItem "новый текст"
ComboBox с добавлением новых элементов в Userform
 
Как то давно на Word находил такую формулу. Для того что бы ComboBox запоминал последнее значение которые выбирал пользователь.
Код
Private Sub UserForm_Initialize()
  ComboBox1.AddItem "Иванов"
  ComboBox1.AddItem "Петров"
  ComboBox1.AddItem "Сидоров"
  
  Dim i As Integer
  On Error Resume Next
  i = CInt(ThisDocument.Variables("Combobox1LastChoice").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 = "Combobox1LastChoice" Then
      Exit For
    End If
  Next
  If var Is Nothing Then
    ThisDocument.Variables.Add "Combobox1LastChoice", ComboBox1.ListIndex
  Else
    var.Value = ComboBox1.ListIndex
  End If
End Sub

Возможно что то подобное можно придумать для Excel ну естественно что бы Лист запоминался.
ComboBox с добавлением новых элементов в Userform
 
Добавляю пример
ComboBox с добавлением новых элементов в Userform
 
На другом форуме мне предложили вот такой вариант
Код
Dim t$, i As Variant 
t = "Premix Drops"
i = Application.Match(t, ComboBox1.List, 0)
 
If Not IsError(i) Then
   MsgBox t & " уже есть с списке и мы его уничтожим ", vbCritical, ""
   ComboBox1.RemoveItem i - 1
Else
   ComboBox1.AddItem t
End If
Единственный недостаток это то что после того как закрываешь UserForm все возвращается в исходное состояние.
Как доработать?  
Изменено: Шит - 29.12.2018 21:58:40
ComboBox с добавлением новых элементов в Userform
 
Dima S, Спасибо)) Как узнаю как сделаю)

Цитата
БМВ написал: Проанализируйте свой ник.
Значение Шит
ComboBox с добавлением новых элементов в Userform
 
Цитата
Anchoret написал:
речь о заполнении Комбобокса уникальными значениями?
Да. В ComboBoxe названия Брендов.... в случае если появляется новый бренд, его нужно добавить в список, а на случай если ошибся реализовать удаление.
ComboBox с добавлением новых элементов в Userform
 
Цитата
Sanja написал:
Перенаполняйте Ваш Array нужными на данный момент данными и 'скармливайте' его КомбоБоксу
Хочется это делать через кнопочку на UserForm)))
ComboBox с добавлением новых элементов в Userform
 
Доброго и с Наступающим.
Помогите реализовать.
В UserForm есть ComboBox добавил в него значения с помощью такой формулы
Код
Private Sub UserForm_Initialize()
    ComboBox1.List = Array("Capella", "DIY Flavor Shack", "Flavor West", "Flavorah", "Inawera")
End Sub
Как в таком случае добавить новые элементы в Userform и удалить старые, а так же добавить предупреждение что в списке такой элемент уже присутствует? Мне нужно что бы не было связи ни с диапазоном ни с ячейками.

Заранее спасибо.
Как заставить combobox запоминать последнее значение?
 
Апострофф, Спасибо. Хорошее решение. Но меня интересует возможность запоминать выбор в определенных combobox
Как заставить combobox запоминать последнее значение?
 
Sanja, В UserForm у меня два а в дальнейшем больше Combobox два из них взаимосвязаны ( возможно это важно) В одном списке я выбераю округ в другом район и после того как я закрываю диалоговое окно нужно что эти данные сохранились. то есть при новом открытии UserForm были уже выбраны предыдущие данные.
Как заставить combobox запоминать последнее значение?
 
Sanja, Да это для ворда. Но я думал ризницы большой нет), не очень опытен я в этих делах подскажите про ГЛОБАЛЬНУЮ переменную, что как там делать?
Страницы: 1 2 3 4 След.
Наверх