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

Вход

Регистрация

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

 

= Мир MS Excel/Автоматическая вставка счетчика при условии - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автоматическая вставка счетчика при условии (Макросы/Sub)
Автоматическая вставка счетчика при условии
misterleks Дата: Пятница, 17.07.2020, 09:25 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Нужна помощь в решении следующей проблемы.
Необходимо создать автоматический счетчик, чтобы он вставлялся при определённом условии, например написании "вх.", то есть человек в ячейке начинает писать вх. и Эксель автоматически вставил, например, вх. 123, в следующей ячейке опять начинают писать вх. и он заменил бы или добавил вх. 124.
Как сделать я представляю, но как это написать в эксель - не знаю.
Нужна переменная, которая хранила бы последнюю цифру счетчика и слежка за сочетаниями клавиш (или что то другое... даже и не знаю, например менять сочетание @count) и при определении этого сочетания менять на цифру счетчика+1.
 
Ответить
СообщениеНужна помощь в решении следующей проблемы.
Необходимо создать автоматический счетчик, чтобы он вставлялся при определённом условии, например написании "вх.", то есть человек в ячейке начинает писать вх. и Эксель автоматически вставил, например, вх. 123, в следующей ячейке опять начинают писать вх. и он заменил бы или добавил вх. 124.
Как сделать я представляю, но как это написать в эксель - не знаю.
Нужна переменная, которая хранила бы последнюю цифру счетчика и слежка за сочетаниями клавиш (или что то другое... даже и не знаю, например менять сочетание @count) и при определении этого сочетания менять на цифру счетчика+1.

Автор - misterleks
Дата добавления - 17.07.2020 в 09:25
Pelena Дата: Пятница, 17.07.2020, 09:38 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19158
Репутация: 4411 ±
Замечаний: ±

Excel 365 & Mac Excel
А кроме "вх." человек ещё что-то может начать писать?
Файл с примером помог бы в понимании проблемы


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеА кроме "вх." человек ещё что-то может начать писать?
Файл с примером помог бы в понимании проблемы

Автор - Pelena
Дата добавления - 17.07.2020 в 09:38
Nic70y Дата: Пятница, 17.07.2020, 09:52 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 8703
Репутация: 2258 ±
Замечаний: 0% ±

Excel 2010
по приколу - выпадающий список (проверка данных)
К сообщению приложен файл: 3351168.xlsx (8.8 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщениепо приколу - выпадающий список (проверка данных)

Автор - Nic70y
Дата добавления - 17.07.2020 в 09:52
misterleks Дата: Пятница, 17.07.2020, 09:58 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Приложил пример, бухгалтера делают списки документов и у них реестр счетов и при написании они каждый раз ищут какой был последний входящий, он мог быть в любой ячейке, причем не по порядку, да и файл огромный, искать по нему очень сложно, так как разница в ячейках может достигать до 50 ячеек.
Людям будет сказано, чтобы включился счетчик, пишите определённое словосочетание. Это решаемо. Главное то автоматический счетчик, чтобы не искать последний номер. Да и проблема ещё в том, что и столбцы бывают разные, в примере у меня в одном столбце, но у них в разных бывает.
Счетчик всегда последовательный +1, никаких скачков не бывает.
К сообщению приложен файл: 0862466.xlsx (9.4 Kb)
 
Ответить
СообщениеПриложил пример, бухгалтера делают списки документов и у них реестр счетов и при написании они каждый раз ищут какой был последний входящий, он мог быть в любой ячейке, причем не по порядку, да и файл огромный, искать по нему очень сложно, так как разница в ячейках может достигать до 50 ячеек.
Людям будет сказано, чтобы включился счетчик, пишите определённое словосочетание. Это решаемо. Главное то автоматический счетчик, чтобы не искать последний номер. Да и проблема ещё в том, что и столбцы бывают разные, в примере у меня в одном столбце, но у них в разных бывает.
Счетчик всегда последовательный +1, никаких скачков не бывает.

Автор - misterleks
Дата добавления - 17.07.2020 в 09:58
misterleks Дата: Пятница, 17.07.2020, 10:02 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
по приколу - выпадающий список (проверка данных)

У них это в тексте идет, вот в чем проблема. Например: Работы исполнены по (вх. 224 от 17.07.2020) и это вх. должно замениться счетчиком, чтобы не искать последний входящий.
 
Ответить
Сообщение
по приколу - выпадающий список (проверка данных)

У них это в тексте идет, вот в чем проблема. Например: Работы исполнены по (вх. 224 от 17.07.2020) и это вх. должно замениться счетчиком, чтобы не искать последний входящий.

Автор - misterleks
Дата добавления - 17.07.2020 в 10:02
Pelena Дата: Пятница, 17.07.2020, 10:05 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19158
Репутация: 4411 ±
Замечаний: ±

Excel 365 & Mac Excel
Нужна переменная, которая хранила бы последнюю цифру счетчика
а ячейка на скрытом листе подойдёт?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
Нужна переменная, которая хранила бы последнюю цифру счетчика
а ячейка на скрытом листе подойдёт?

Автор - Pelena
Дата добавления - 17.07.2020 в 10:05
Nic70y Дата: Пятница, 17.07.2020, 10:11 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 8703
Репутация: 2258 ±
Замечаний: 0% ±

Excel 2010
я бы ЮзерФорму нарисовал,
вызываемую по выделению пустой ячейки в нужном диапазоне,
в текстбоксе отслеживал бы 3 правых символа или 4 со скобкой,
далее Application.Count +1 Application.CountIf +1


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Пятница, 17.07.2020, 10:32
 
Ответить
Сообщениея бы ЮзерФорму нарисовал,
вызываемую по выделению пустой ячейки в нужном диапазоне,
в текстбоксе отслеживал бы 3 правых символа или 4 со скобкой,
далее Application.Count +1 Application.CountIf +1

Автор - Nic70y
Дата добавления - 17.07.2020 в 10:11
misterleks Дата: Пятница, 17.07.2020, 10:17 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
а ячейка на скрытом листе подойдёт?

Да, скрыть ячейку можно в любом месте. Проблема только в том, что у них уже есть эта громадная таблица и форму её менять нельзя. Надо внедрить это.
Если бы таблицы не было, я бы создал и сказал как заполнять по ячейкам, но они ведут её с начала года и вопрос только сейчас встал такой.
 
Ответить
Сообщение
а ячейка на скрытом листе подойдёт?

Да, скрыть ячейку можно в любом месте. Проблема только в том, что у них уже есть эта громадная таблица и форму её менять нельзя. Надо внедрить это.
Если бы таблицы не было, я бы создал и сказал как заполнять по ячейкам, но они ведут её с начала года и вопрос только сейчас встал такой.

Автор - misterleks
Дата добавления - 17.07.2020 в 10:17
misterleks Дата: Пятница, 17.07.2020, 11:17 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
вызываемую по выделению пустой ячейки в нужном диапазоне

Вставлять свой текст до и после можно таким образом?
 
Ответить
Сообщение
вызываемую по выделению пустой ячейки в нужном диапазоне

Вставлять свой текст до и после можно таким образом?

Автор - misterleks
Дата добавления - 17.07.2020 в 11:17
Nic70y Дата: Пятница, 17.07.2020, 11:37 | Сообщение № 10
Группа: Друзья
Ранг: Экселист
Сообщений: 8703
Репутация: 2258 ±
Замечаний: 0% ±

Excel 2010
Вставлять свой текст до и после
не понял вопроса, но все можно.
АпДэйт
сразу все писать в текстбокс юзерформы.
АпДэйт
чет на работе затишье, аж скучно стало, держите:
Модуль листа:
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub   'при выделении более 1й ячейки - выход из макроса
    u_1 = Cells(Rows.Count, "a").End(xlUp).Row  'последняя заполненная строка столбца A
    u_2 = Target.Row                            'строка выбранной ячейки
    u_3 = Target.Column                         'столбец выбранной ячейки
    u_4 = Target.Value                          'значение (содержание)
    If u_2 <= u_1 And u_3 = 5 And u_4 = "" Then UserForm1.Show
End Sub
[/vba]
Модуль Юзерформы
[vba]
Код
Private Sub TextBox1_Change()
    u_1 = TextBox1.Value
    u_2 = Right(u_1, 3)
    If u_2 = "вх." Then
        u_3 = Cells(Rows.Count, "a").End(xlUp).Row
        u_4 = Application.CountIf(Range("e2:e" & u_3), "*вх.*") + 1
        TextBox1 = u_1 & " " & u_4
    End If
End Sub
Private Sub CommandButton1_Click()
    Selection = TextBox1.Value
    Unload UserForm1
End Sub
[/vba]ну я так вижу))
АпДэйт
при желании можно и "от сегодня" вставить
К сообщению приложен файл: 18.xlsm (18.9 Kb)


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Пятница, 17.07.2020, 12:55
 
Ответить
Сообщение
Вставлять свой текст до и после
не понял вопроса, но все можно.
АпДэйт
сразу все писать в текстбокс юзерформы.
АпДэйт
чет на работе затишье, аж скучно стало, держите:
Модуль листа:
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub   'при выделении более 1й ячейки - выход из макроса
    u_1 = Cells(Rows.Count, "a").End(xlUp).Row  'последняя заполненная строка столбца A
    u_2 = Target.Row                            'строка выбранной ячейки
    u_3 = Target.Column                         'столбец выбранной ячейки
    u_4 = Target.Value                          'значение (содержание)
    If u_2 <= u_1 And u_3 = 5 And u_4 = "" Then UserForm1.Show
End Sub
[/vba]
Модуль Юзерформы
[vba]
Код
Private Sub TextBox1_Change()
    u_1 = TextBox1.Value
    u_2 = Right(u_1, 3)
    If u_2 = "вх." Then
        u_3 = Cells(Rows.Count, "a").End(xlUp).Row
        u_4 = Application.CountIf(Range("e2:e" & u_3), "*вх.*") + 1
        TextBox1 = u_1 & " " & u_4
    End If
End Sub
Private Sub CommandButton1_Click()
    Selection = TextBox1.Value
    Unload UserForm1
End Sub
[/vba]ну я так вижу))
АпДэйт
при желании можно и "от сегодня" вставить

Автор - Nic70y
Дата добавления - 17.07.2020 в 11:37
misterleks Дата: Пятница, 17.07.2020, 13:18 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Я имел в виду, что в примере, который скинули Вы, изменения невозможны, к сожалению. (это я к Вашему первому сообщению писал)
Если всё возможно, то можете подсказать как это сделать?

Upd. Спасибо.


Сообщение отредактировал misterleks - Пятница, 17.07.2020, 13:29
 
Ответить
СообщениеЯ имел в виду, что в примере, который скинули Вы, изменения невозможны, к сожалению. (это я к Вашему первому сообщению писал)
Если всё возможно, то можете подсказать как это сделать?

Upd. Спасибо.

Автор - misterleks
Дата добавления - 17.07.2020 в 13:18
misterleks Дата: Пятница, 17.07.2020, 13:27 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
при желании можно и "от сегодня" вставить

То есть можно дату ещё вставить? А можно как то сделать таким образом: u_4 = Application.CountIf(Range("e2:e" & u_3), "*вх.*") + 1 + %date%
 
Ответить
Сообщение
при желании можно и "от сегодня" вставить

То есть можно дату ещё вставить? А можно как то сделать таким образом: u_4 = Application.CountIf(Range("e2:e" & u_3), "*вх.*") + 1 + %date%

Автор - misterleks
Дата добавления - 17.07.2020 в 13:27
Nic70y Дата: Пятница, 17.07.2020, 13:28 | Сообщение № 13
Группа: Друзья
Ранг: Экселист
Сообщений: 8703
Репутация: 2258 ±
Замечаний: 0% ±

Excel 2010
в примере, который скинули Вы
а, а я о юзерформе подумал,
просто галку убрать в проверке данных
К сообщению приложен файл: 19.xlsx (8.7 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщение
в примере, который скинули Вы
а, а я о юзерформе подумал,
просто галку убрать в проверке данных

Автор - Nic70y
Дата добавления - 17.07.2020 в 13:28
Nic70y Дата: Пятница, 17.07.2020, 13:31 | Сообщение № 14
Группа: Друзья
Ранг: Экселист
Сообщений: 8703
Репутация: 2258 ±
Замечаний: 0% ±

Excel 2010
+ %date%
какую дату Вы собираетесь складывать?
я горорил о дате сегодняшнего дня,
типа так:
пишите: ююю(вх.
получаете: ююю(вх. 7 от 17.07.2020


ЮMoney 41001841029809
 
Ответить
Сообщение
+ %date%
какую дату Вы собираетесь складывать?
я горорил о дате сегодняшнего дня,
типа так:
пишите: ююю(вх.
получаете: ююю(вх. 7 от 17.07.2020

Автор - Nic70y
Дата добавления - 17.07.2020 в 13:31
misterleks Дата: Пятница, 17.07.2020, 13:32 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Nic70y, мы сейчас запутаемся )) Извините меня, просто отвлекают, начинаю одно писать, потом продолжаю, а в это время Вы уже сделали запись.
Я про первую запись писал про изменения - Вы скинули 19 файл.
В 18 файле реально дату вставить?
 
Ответить
СообщениеNic70y, мы сейчас запутаемся )) Извините меня, просто отвлекают, начинаю одно писать, потом продолжаю, а в это время Вы уже сделали запись.
Я про первую запись писал про изменения - Вы скинули 19 файл.
В 18 файле реально дату вставить?

Автор - misterleks
Дата добавления - 17.07.2020 в 13:32
misterleks Дата: Пятница, 17.07.2020, 13:33 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
я горорил о дате сегодняшнего дня

Именно сегодня. Если другую, то это уже надо ИИ писать ))
 
Ответить
Сообщение
я горорил о дате сегодняшнего дня

Именно сегодня. Если другую, то это уже надо ИИ писать ))

Автор - misterleks
Дата добавления - 17.07.2020 в 13:33
Nic70y Дата: Пятница, 17.07.2020, 13:40 | Сообщение № 17
Группа: Друзья
Ранг: Экселист
Сообщений: 8703
Репутация: 2258 ±
Замечаний: 0% ±

Excel 2010
В 18 файле реально дату вставить?
конечно
[vba]
Код
        u_5 = Date
        u_6 = Right(0 & Day(u_5), 2) & "."
        u_7 = Right(0 & Month(u_5), 2) & "."
        u_8 = Year(u_5)
        TextBox1 = u_1 & " " & u_4 & " от " & u_6 & u_7 & u_8 & ")"
[/vba]
К сообщению приложен файл: 21.xlsm (19.4 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщение
В 18 файле реально дату вставить?
конечно
[vba]
Код
        u_5 = Date
        u_6 = Right(0 & Day(u_5), 2) & "."
        u_7 = Right(0 & Month(u_5), 2) & "."
        u_8 = Year(u_5)
        TextBox1 = u_1 & " " & u_4 & " от " & u_6 & u_7 & u_8 & ")"
[/vba]

Автор - Nic70y
Дата добавления - 17.07.2020 в 13:40
misterleks Дата: Пятница, 17.07.2020, 13:41 | Сообщение № 18
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Извиняюсь. Все работает.
Огромное спасибо!


Сообщение отредактировал misterleks - Пятница, 17.07.2020, 13:44
 
Ответить
СообщениеИзвиняюсь. Все работает.
Огромное спасибо!

Автор - misterleks
Дата добавления - 17.07.2020 в 13:41
misterleks Дата: Пятница, 17.07.2020, 14:03 | Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Nic70y, очень классно! А подскажите ещё такую вещь, где задать начальное значение? И как распространить на определённые столбцы, то есть у них ЮзерФорма должна отрабатывать через 3 столбца ^_^
Upd. Обнаружили, что если в одной юзерформе писать несколько раз вх., то он проставляет один номер. Можно ли как то сделать, чтобы проставлялся следующий? Или счетчик запоминает только по нажатию Энтер?


Сообщение отредактировал misterleks - Пятница, 17.07.2020, 14:07
 
Ответить
СообщениеNic70y, очень классно! А подскажите ещё такую вещь, где задать начальное значение? И как распространить на определённые столбцы, то есть у них ЮзерФорма должна отрабатывать через 3 столбца ^_^
Upd. Обнаружили, что если в одной юзерформе писать несколько раз вх., то он проставляет один номер. Можно ли как то сделать, чтобы проставлялся следующий? Или счетчик запоминает только по нажатию Энтер?

Автор - misterleks
Дата добавления - 17.07.2020 в 14:03
Nic70y Дата: Пятница, 17.07.2020, 14:07 | Сообщение № 20
Группа: Друзья
Ранг: Экселист
Сообщений: 8703
Репутация: 2258 ±
Замечаний: 0% ±

Excel 2010
где задать начальное значение?
т.е. на листе нумерация может начинаться не с 1?
тогда
Application.CountIf(Range("e2:e" & u_3), "*вх.*") + 1
не подойдет
через 3 столбца
начиная с 5-го?


ЮMoney 41001841029809
 
Ответить
Сообщение
где задать начальное значение?
т.е. на листе нумерация может начинаться не с 1?
тогда
Application.CountIf(Range("e2:e" & u_3), "*вх.*") + 1
не подойдет
через 3 столбца
начиная с 5-го?

Автор - Nic70y
Дата добавления - 17.07.2020 в 14:07
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автоматическая вставка счетчика при условии (Макросы/Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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