Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макросы для автозаполнения формы - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макросы для автозаполнения формы (Макросы/Sub)
Макросы для автозаполнения формы
zyoger Дата: Понедельник, 21.02.2022, 10:19 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Всем привет!!
Прошу помощи с макросами. Макросы простые. Требуется заполнить ячейки согласно условию (проставить дату, добавить значение). Подробная информация указана в файле в примечаниях. Заранее спасибо.
К сообщению приложен файл: 8393159.xlsx(16.1 Kb)
 
Ответить
СообщениеВсем привет!!
Прошу помощи с макросами. Макросы простые. Требуется заполнить ячейки согласно условию (проставить дату, добавить значение). Подробная информация указана в файле в примечаниях. Заранее спасибо.

Автор - zyoger
Дата добавления - 21.02.2022 в 10:19
Nic70y Дата: Понедельник, 21.02.2022, 11:20 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 7744
Репутация: 1858 ±
Замечаний: 0% ±

Excel 2010
[vba]
Код
Sub number___()
    u = Cells(Rows.Count, "a").End(xlUp).Row
    v = Range("b" & u).Value
    If v = "" Then
        Range("b" & u) = 52
    Else
        MsgBox "Нет данных в A!"
    End If
End Sub
Sub date___()
    u = Cells(Rows.Count, "a").End(xlUp).Row
    v = Range("c" & u).Value
    If v = "" Then
        Range("c" & u) = Format(Date, "dd.mm.yyyy")
    Else
        MsgBox "Нет данных в A!"
    End If
End Sub
[/vba]конечную дату не понял
К сообщению приложен файл: 15.xlsm(22.8 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщение[vba]
Код
Sub number___()
    u = Cells(Rows.Count, "a").End(xlUp).Row
    v = Range("b" & u).Value
    If v = "" Then
        Range("b" & u) = 52
    Else
        MsgBox "Нет данных в A!"
    End If
End Sub
Sub date___()
    u = Cells(Rows.Count, "a").End(xlUp).Row
    v = Range("c" & u).Value
    If v = "" Then
        Range("c" & u) = Format(Date, "dd.mm.yyyy")
    Else
        MsgBox "Нет данных в A!"
    End If
End Sub
[/vba]конечную дату не понял

Автор - Nic70y
Дата добавления - 21.02.2022 в 11:20
zyoger Дата: Понедельник, 21.02.2022, 11:39 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Nic70y, спасибо, практически то что нужно. Только не совсем так заполняет как надо. Заполняется только последняя строка, а надо что бы все строки были заполнены (скрин во вложении).
По поводу конечной даты, она должна рассчитываться следующим образом:
если "тип резерва (столбец Е)" = 2, то дата должна быть "31.12.2049"
если "тип резерва (столбец Е)" = 3, то дата должна быть "текущая дата + 3 месяца" (если сегодня 21.02.2022 то итоговая дата должна быть: 21.05.2022)
если "тип резерва (столбец Е)" = 22, то дата должна быть "текущая дата + 1 месяца" (если сегодня 21.02.2022 то итоговая дата должна быть: 21.03.2022)
если "тип резерва (столбец Е)" = 99, то дата должна быть "текущая дата + 2 месяца" (если сегодня 21.02.2022 то итоговая дата должна быть: 21.04.2022)
К сообщению приложен файл: 3491864.png(117.3 Kb)
 
Ответить
СообщениеNic70y, спасибо, практически то что нужно. Только не совсем так заполняет как надо. Заполняется только последняя строка, а надо что бы все строки были заполнены (скрин во вложении).
По поводу конечной даты, она должна рассчитываться следующим образом:
если "тип резерва (столбец Е)" = 2, то дата должна быть "31.12.2049"
если "тип резерва (столбец Е)" = 3, то дата должна быть "текущая дата + 3 месяца" (если сегодня 21.02.2022 то итоговая дата должна быть: 21.05.2022)
если "тип резерва (столбец Е)" = 22, то дата должна быть "текущая дата + 1 месяца" (если сегодня 21.02.2022 то итоговая дата должна быть: 21.03.2022)
если "тип резерва (столбец Е)" = 99, то дата должна быть "текущая дата + 2 месяца" (если сегодня 21.02.2022 то итоговая дата должна быть: 21.04.2022)

Автор - zyoger
Дата добавления - 21.02.2022 в 11:39
zyoger Дата: Понедельник, 21.02.2022, 11:58 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Nic70y, еще парочка вопросов :)
1. Можно ли сделать макрос который разные форматы ячеек в столбце А меняет на один, а именно "общий, без форматирования". Данные которые приходится копировать в столбец А бывают "Число в этой ячейке отформатировано как текст, или перед ним стоит апостроф."
2. И макрос который будет сохранять данный файл на рабочем столе с именем "Шаблон Gold_'текущая дата. xlsx'", в формате xlsx (без поддержки макросов).
 
Ответить
СообщениеNic70y, еще парочка вопросов :)
1. Можно ли сделать макрос который разные форматы ячеек в столбце А меняет на один, а именно "общий, без форматирования". Данные которые приходится копировать в столбец А бывают "Число в этой ячейке отформатировано как текст, или перед ним стоит апостроф."
2. И макрос который будет сохранять данный файл на рабочем столе с именем "Шаблон Gold_'текущая дата. xlsx'", в формате xlsx (без поддержки макросов).

Автор - zyoger
Дата добавления - 21.02.2022 в 11:58
Nic70y Дата: Понедельник, 21.02.2022, 12:08 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 7744
Репутация: 1858 ±
Замечаний: 0% ±

Excel 2010
zyoger, а зачем три макроса, может одним обойдемся?
[vba]
Код
Sub u__()
    Application.ScreenUpdating = False
    u = Cells(Rows.Count, "a").End(xlUp).Row
    a = Date
    f = Year(a)
    g = Month(a)
    h = Day(a)
    For Each c In Range("a2:a" & u)
        If c <> "" And c.Offset(0, 1) = "" Then
            c.Offset(0, 1) = 52
        End If
        If c <> "" And c.Offset(0, 2) = "" Then
            c.Offset(0, 2) = Format(a, "dd.mm.yyyy")
        End If
        If c <> "" And c.Offset(0, 3) = "" Then
            x = c.Offset(0, 4)
            If x = 2 Then c.Offset(0, 3) = Format(DateSerial(2049, 12, 31), "dd.mm.yyyy")
            If x = 3 Then c.Offset(0, 3) = Format(DateSerial(f, g + 3, h), "dd.mm.yyyy")
            If x = 22 Then c.Offset(0, 3) = Format(DateSerial(f, g + 1, h), "dd.mm.yyyy")
            If x = 99 Then c.Offset(0, 3) = Format(DateSerial(f, g + 2, h), "dd.mm.yyyy")
        End If
        Range("a" & c.Row).NumberFormat = "General"
    Next
    Application.ScreenUpdating = True
End Sub
[/vba]
К сообщению приложен файл: 15-1-.xlsm(23.9 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщениеzyoger, а зачем три макроса, может одним обойдемся?
[vba]
Код
Sub u__()
    Application.ScreenUpdating = False
    u = Cells(Rows.Count, "a").End(xlUp).Row
    a = Date
    f = Year(a)
    g = Month(a)
    h = Day(a)
    For Each c In Range("a2:a" & u)
        If c <> "" And c.Offset(0, 1) = "" Then
            c.Offset(0, 1) = 52
        End If
        If c <> "" And c.Offset(0, 2) = "" Then
            c.Offset(0, 2) = Format(a, "dd.mm.yyyy")
        End If
        If c <> "" And c.Offset(0, 3) = "" Then
            x = c.Offset(0, 4)
            If x = 2 Then c.Offset(0, 3) = Format(DateSerial(2049, 12, 31), "dd.mm.yyyy")
            If x = 3 Then c.Offset(0, 3) = Format(DateSerial(f, g + 3, h), "dd.mm.yyyy")
            If x = 22 Then c.Offset(0, 3) = Format(DateSerial(f, g + 1, h), "dd.mm.yyyy")
            If x = 99 Then c.Offset(0, 3) = Format(DateSerial(f, g + 2, h), "dd.mm.yyyy")
        End If
        Range("a" & c.Row).NumberFormat = "General"
    Next
    Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Nic70y
Дата добавления - 21.02.2022 в 12:08
zyoger Дата: Понедельник, 21.02.2022, 12:34 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Nic70y, Да согласен, логичнее сделать одним макросом.
Подскажите, возможно ли еще реализовать следующее:
1. Можно ли сделать макрос который разные форматы ячеек в столбце А меняет на один, а именно "общий, без форматирования". Данные которые приходится копировать в столбец А бывают "Число в этой ячейке отформатировано как текст, или перед ним стоит апостроф."
2. И макрос который будет сохранять данный файл на рабочем столе с именем "Шаблон Gold_'текущая дата. xlsx'", в формате xlsx (без поддержки макросов).
 
Ответить
СообщениеNic70y, Да согласен, логичнее сделать одним макросом.
Подскажите, возможно ли еще реализовать следующее:
1. Можно ли сделать макрос который разные форматы ячеек в столбце А меняет на один, а именно "общий, без форматирования". Данные которые приходится копировать в столбец А бывают "Число в этой ячейке отформатировано как текст, или перед ним стоит апостроф."
2. И макрос который будет сохранять данный файл на рабочем столе с именем "Шаблон Gold_'текущая дата. xlsx'", в формате xlsx (без поддержки макросов).

Автор - zyoger
Дата добавления - 21.02.2022 в 12:34
Nic70y Дата: Понедельник, 21.02.2022, 13:19 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 7744
Репутация: 1858 ±
Замечаний: 0% ±

Excel 2010
добавьте
[vba]
Код
        Range("a" & c.Row).NumberFormat = "General"
        Range("a" & c.Row) = Range("a" & c.Row).Value
[/vba]
это уже совсем другая тема,
нужно создавать ее - новую


ЮMoney 41001841029809
 
Ответить
Сообщениедобавьте
[vba]
Код
        Range("a" & c.Row).NumberFormat = "General"
        Range("a" & c.Row) = Range("a" & c.Row).Value
[/vba]
это уже совсем другая тема,
нужно создавать ее - новую

Автор - Nic70y
Дата добавления - 21.02.2022 в 13:19
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макросы для автозаполнения формы (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2022 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!