Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
Заблокирован

Как в VBA UserForm добавить NumericUpDown (TextBox+SpinButton)?

21.09.2019, 22:13. Показов 1959. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пример такого контрола во вложении.

Понятно, что можно просто добавить TextBox и SpinButton, выставить размеры и привязать их друг к другу, но это не способствует ни скорости и легкости разработки, ни простоте результирующего кода

Есть идея как притащить контрол NumericUpDown из дотнета.

Но это идея, а может у кого есть готовое решение?
Изображения
 
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.09.2019, 22:13
Ответы с готовыми решениями:

Использование SpinButton в UserForm
Здравствуйте всем! Есть пользовательская форма с двумя элементами: SpinButton и TextBox. Для элемента SpinButton1 в свойствах установлены...

Использование модуля как обработчика TextBox, SpinButton,CommandButton,ComboBox
Имеется форма с наличием множества TextBox, ComboBox, SpinButton,CommandButton, CommandButton. Для упрощения элементы формы группируются с...

Как изменить угол наклона прямой используя SpinButton в Excel/Power Point VBA?
Мне нужно изменить угол наклона прямой (увеличить/ уменьшить) используя SpinButton в Excel или Power Point VBA?

7
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,722
Записей в блоге: 14
21.09.2019, 22:43
Цитата Сообщение от Смолевич Посмотреть сообщение
Понятно, что можно просто добавить TextBox и SpinButton, выставить размеры и привязать их друг к другу, но это не способствует ни скорости и легкости разработки, ни простоте результирующего кода
Есть идея как притащить контрол NumericUpDown из дотнета.
- я думаю, что тащить из Dot.Net будет как раз труднее. И значительно.
0
Заблокирован
21.09.2019, 23:58  [ТС]
Catstail, да уже попробовал.

Пара часов - и в целом сделал (хотя пока не всё устраивает).
А когда уже сделал, и надо будет добавлять эти контролы (и не в единичном количестве - в моем проекте огромная форма настроек с 10+ вкладками), а потом вносить всякие изменения (мой проект поддерживается уже несколько лет), тут-то и наступает облегчение.

Да и из .NET вообще-то стоило бы не только это притащить.
Еще на ум приходят Calendar, DateTimePicker, DataGridView, и что-то по теме "свистелок и перделок" (у меня не тот случай - я пишу макрос на заказ одному человеку - но возможно есть те, кто продает макросы и им стоило бы сделать их красивыми ).
Возможно, в итоге сведу все к одному универсальному контролу, который позволит встроить в VBA что угодно из дотнета.
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,722
Записей в блоге: 14
22.09.2019, 07:35
Цитата Сообщение от Смолевич Посмотреть сообщение
Пара часов - и в целом сделал
- аналог NumericUpDown делается из стандартных элементов VBA за 20 мин.
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,722
Записей в блоге: 14
22.09.2019, 09:24
Вот как это может выглядеть:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub Test()
    frmAskDat.Show
    ans$ = frmAskDat.Tag
    If ans$ <> "" Then
       v = Split(ans$, ";")
       yyyy% = Val(v(0))
       mm% = Val(v(1))
       Debug.Print yyyy%
       Debug.Print mm%
    End If
End Sub
Код формы:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Private Sub CommandButton1_Click()
        Me.Tag = CStr(Me.SpinButton1.Value) & ";" & CStr(Me.SpinButton2.Value)
        Me.Hide
End Sub
 
Private Sub CommandButton2_Click()
       Me.Tag = ""
       Me.Hide
End Sub
 
Private Sub SpinButton1_Change()
 
        Me.Label1.Caption = CStr(Me.SpinButton1.Value)
 
End Sub
 
Private Sub SpinButton2_Change()
 
        n% = Me.SpinButton2.Value
        
        Select Case n%
        
               Case 1
                    txt$ = "Январь"
               Case 2
                    txt$ = "Февраль"
               Case 3
                    txt$ = "Март"
               Case 4
                    txt$ = "Апрель"
               Case 5
                    txt$ = "Май"
               Case 6
                    txt$ = "Июнь"
               Case 7
                    txt$ = "Июль"
               Case 8
                    txt$ = "Август"
               Case 9
                    txt$ = "Сентябрь"
               Case 10
                    txt$ = "Октябрь"
               Case 11
                    txt$ = "Ноябрь"
               Case 12
                    txt$ = "Декабрь"
        
        End Select
 
        Me.Label2.Caption = txt$
 
End Sub
 
Private Sub UserForm_Activate()
 
        Me.SpinButton1.Value = Year(Date)
        Me.SpinButton2.Value = Month(Date)
        
End Sub
Изображения
 
Вложения
Тип файла: zip Выбор-даты.zip (13.3 Кб, 10 просмотров)
0
32 / 9 / 4
Регистрация: 21.01.2018
Сообщений: 54
22.09.2019, 10:39
Цитата Сообщение от Смолевич Посмотреть сообщение
Есть идея как притащить контрол NumericUpDown из дотнета.
Но это идея, а может у кого есть готовое решение?
Я - любитель-дилетант в программировании. Программирую только для себя, для своих инженерно-технических задач.
Не понял, зачем это нужно. В такой ситуации все бы программировал, что нужно в VB.Net для Excel. В своих задачах в VBA Excel у меня прекрасно работала это пара: TextBox и SpinButton, делала все, что мне нужно.
0
Заблокирован
22.09.2019, 15:25  [ТС]
Catstail, да я представляю, как это может выглядеть. Но то на каждый контрол 20 мин тратить, а то только один раз и далее каждый за секунды.

Добавлено через 2 минуты
A_Qz,
В такой ситуации все бы программировал, что нужно в VB.Net для Excel
Макросы во многих случаях все же удобнее, чем внешняя программа. Переключаешься на программу - нажимаешь кнопку в программе - потом настраиваешь что-то в экзеле (допустим выделяешь нужные ячейки или объекты) - опять переключаешься на программу - опять нажимаешь в ней кнопку... Примерно так это выглядит.
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,722
Записей в блоге: 14
22.09.2019, 18:00
Смолевич, да, согласен. Если контролов десятки, то мой путь невыгоден. Поделитесь, как это сделали Вы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.09.2019, 18:00
Помогаю со студенческими работами здесь

Как отобразить элементы NumericUpDown в TextBox
Подскажите как при изменении NumericUpDown отобразить его вTextBox или Lable выглядеть должно где то так NumericUpDown 2 to...

Интеграция textbox в SpinButton
Добрый день... Всегда пользовался обычными кнопками и соответственно вешал на них макросы через Button_Click. Но столкнулся с тем что мне...

Нужно связать SpinButton и TextBox
Надо связать SpinButton и TextBox чтобы при нажатии на верхнюю стрелку в SpinButton он в TextBox плюсовал на 2, а на нижнюю что бы вычитал...

Как сделать автозавершение в UserForm.TextBox'е
Вобщем народ подскажите мне ламаку как сделать так, чтоб когда я чё-нибдь пишу в текстбоксе он мне предлагал завершить начатое слово или...

Существует ли аналог элемента управления spinbutton из VBA?
В excel в разработчике при переходе к вкладке visual basic, можно создавать различные формы и там присутствует элемент управления...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru