Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.81/16: Рейтинг темы: голосов - 16, средняя оценка - 4.81
1 / 1 / 0
Регистрация: 28.04.2016
Сообщений: 103
1

Простейший макрос EXEL

23.07.2020, 14:38. Показов 3050. Ответов 28

Author24 — интернет-сервис помощи студентам
Здравствуйте, Уважаемые знатоки непонятных иероглифов!

Я не являюсь программистом, а то чем вы занимаетесь для меня всегда было сложным.
Работаю инженером по стандартизации на заводе, работы много но не всё успеваю.
Хотелось бы сделать макрос по вводу данных в таблицу.
На скринах : форма которую я создал, с кодом. И таблица в которую должны вноситься данные.
Просветите профана в этой области, это для вас наверное очень простая задача
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.07.2020, 14:38
Ответы с готовыми решениями:

Работа с Word и Exel через макрос, который запускается в Exel
Есть задача: проводятся расчеты в Эксель и из него открывается документ Ворд(эта часть работает),...

Макрос: из PowerPoint развернуть Exel и вызвать уже в нём макрос
Собственно сабж. Работая в презентации PowerPoint нужно по клику на кнопку с прикреплённым макросом...

Простейший макрос для PowerPoint
Для удобства требуется возвращать в PowerPoint масштаб окна на 110%. Возникла идея сделать...

Написать макрос в Exel
Сам текст задания звучит так: В транспортной компании работают водители грузовых автомобилей....

28
Часто онлайн
864 / 579 / 263
Регистрация: 09.01.2017
Сообщений: 1,951
27.07.2020, 12:09 21
Лучший ответ Сообщение было отмечено powerking11 как решение

Решение

Author24 — интернет-сервис помощи студентам
powerking11, мой код вам не подходит? Там вроде все реализованно

Добавлено через 5 минут
powerking11,
после четвертой строки кода вставьте
Visual Basic
1
a = .Cells(LastRow, 1) + 1
это для нумерации

Добавлено через 2 минуты
и если вам нужно несколько "+" ставить, то тогда нужно использовать Checkbox

Добавлено через 2 минуты
а эту вместо пятой
Visual Basic
1
 .Cells(LastRow + 1, 1) = a
0
Эксперт NIX
3195 / 850 / 194
Регистрация: 14.01.2013
Сообщений: 4,068
27.07.2020, 13:48 22
Цитата Сообщение от powerking11 Посмотреть сообщение
Например? Не нашел в гугле ни одной подобной формы с маркерами, везде обычный ввод текста
Маркеры - это что? Если OptionButton, то так и надо гуглить - VBA optionbutton.

Цитата Сообщение от powerking11 Посмотреть сообщение
И не знаю как реализовать ввод сегоднешней даты и следующего номера пункта автоматически
Я же Вашу табличку поправил, специально показав ввод сегодняшней даты и инкремент порядкового номера Запускаете форму, пишите номер, жмакаете кнопку и пожалста.
0
1 / 1 / 0
Регистрация: 28.04.2016
Сообщений: 103
27.07.2020, 14:45  [ТС] 23
КостяФедореев
Огромное спасибо, немного колдовал над вашим кодом и он заработал))
Теперь интересно, можно ли вообще сделать так, что бы при запуске файла exel, запускался только макрос, без таблицы)
0
Часто онлайн
864 / 579 / 263
Регистрация: 09.01.2017
Сообщений: 1,951
27.07.2020, 14:57 24
powerking11, можно просто запускать форму при открытии файла. Возможно и свернуть окно можно. Буду у компа напишу код
0
1 / 1 / 0
Регистрация: 28.04.2016
Сообщений: 103
27.07.2020, 15:34  [ТС] 25
КостяФедореев
О круто)
А еще можно авто сортировку сделать от большего к меньшему, я имею ввиду номер пункта
То есть я отсортировал сверху например 85, снизу 1.. Но когда нажимаю добавить инфу через макрос, добавляется пункт 86 в самом низу под пунктом 1.
Вот как сделать что бы вся свежая инфа автоматом вверх закидывалась
Функцию =НАИБОЛЬШИЙ пробовал дублирует строку
0
Часто онлайн
864 / 579 / 263
Регистрация: 09.01.2017
Сообщений: 1,951
27.07.2020, 17:11 26
powerking11,
В модуль формы:
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
Private Sub CommandButton1_Click()
Dim LastRow As Long
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
With Sheets("Лист1")
a = .Cells(2, 1)
    .Cells(LastRow + 1, 1) = a + 1
    .Cells(LastRow + 1, 2) = Date
    .Cells(LastRow + 1, 3) = TextBox1.Value
   If OptionButton1.Value = True Then
   .Cells(LastRow + 1, 4) = "+"
   End If
    If OptionButton2.Value = True Then
   .Cells(LastRow + 1, 5) = "+"
   End If
   If OptionButton3.Value = True Then
   .Cells(LastRow + 1, 6) = "+"
   End If
   If OptionButton4.Value = True Then
   .Cells(LastRow + 1, 7) = "+"
   End If
   .Cells(LastRow + 1, 8) = TextBox2.Value
   .[a:a].Sort .[a1], xlDescending
End With
End Sub
А это в модуль ЭтаКнига
Visual Basic
1
2
3
4
Private Sub Workbook_Open()
Application.WindowState = xlMinimized
UserForm1.Show 0
End Sub
Добавлено через 54 минуты
powerking11, что то поспешил и не учел, что остальные столбцы то тоже нужно сортировать, поэтому замените 22 строку на:
Visual Basic
1
2
3
4
5
6
7
8
9
10
.Sort.SortFields.Add Key:=Range("A2"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Лист1").Sort
        .SetRange Range("A2:H" & LastRow)
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
0
1 / 1 / 0
Регистрация: 28.04.2016
Сообщений: 103
28.07.2020, 09:35  [ТС] 27
КостяФедореев ,
Я немного изменил, добавил две кнопки, одна скрывает таблицу другая открывает.
Заменил плюсы на "принято" и сделал правила цветов
Всё бы хорошо, но..
Изменил код на ваш, но по итогу при нажимании первая строка появляется внизу, потом вверху и потом опять номер дублирует вверху.
Сами проверьте
Вложения
Тип файла: zip Макрос12.zip (40.9 Кб, 3 просмотров)
0
Часто онлайн
864 / 579 / 263
Регистрация: 09.01.2017
Сообщений: 1,951
28.07.2020, 10:22 28
Лучший ответ Сообщение было отмечено powerking11 как решение

Решение

powerking11,
эту строчку замените
Visual Basic
1
 .SetRange Range("A2:H" & LastRow + 1)
не весь диапазон выделяло.
1
1 / 1 / 0
Регистрация: 28.04.2016
Сообщений: 103
28.07.2020, 12:17  [ТС] 29
Спасибо, лучший + rep

Добавлено через 1 час 6 минут
КостяФедореев
Для удобства еще добавил цикл очистки полей, теперь всё шикарно работает))
PureBasic
1
2
3
4
5
6
Dim c As Control
For Each c In Controls
  Select Case TypeName(c)
  Case "TextBox", "ComboBox", "CheckBox", "OptionButton":   c = ""
  End Select
Next
0
28.07.2020, 12:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.07.2020, 12:17
Помогаю со студенческими работами здесь

Простейший макрос конвертации таблицы Excel
Привет всей компании! Понадобилось решить проблему для получения XML. Есть таблица 30х30....

Напишите макрос для Exel
Напишите макрос автозаполнения строки по диагонали для Exel

Макрос поиска текста в Exel на VBA
Уважаемые Гуру! Получил сегодня просьбу в виде "Нужен совет. Мне надо макрос поиска текста в...

Макрос в Exel, преобразующий таблицу в текст
Здравствуйте! Раньше я делал так: выделял кусок таблицы в Exel вставлял в Word выделял...

Гуру exel нужно написать макрос
Нужно создать макрос которые перебирает все документы exel в папке (по порядку имя) и заменяет...

Макрос для Exel функции если
Уважаемые форумчане срочно нужна Ваша помощь в написание макроса для функции если, значений для...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru