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

Вход

Регистрация

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

 

= Мир MS Excel/Значение из ячейки в MsgBox по последней заполненной строке - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Значение из ячейки в MsgBox по последней заполненной строке
Литр Дата: Пятница, 05.12.2025, 18:59 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 67
Репутация: 0 ±
Замечаний: 0% ±

2013
Доброго дня, премодератор.
прошу разместить новую тему.
Название: Значение из ячейки в MsgBox по последней заполненной строке

Доброго дня, комрады!

Как заставить код искать последнюю заполненную ячейку не по столбцу "В" , а по массиву таблицы. Например (B2:P999)
В приложенном примере в бокс должно попасть значение "25-007"

VBA знаю на уровне копипастера ))
[vba]
Код

Sub КнопкаОкончание()

'Шаг 1: Объявляем переменные
Dim LastRow As Long
'Шаг 2: Захват последнего использованного номера строки
LastRow = Cells(Rows.Count, 2).End(xlUp).Row
'Шаг 3: Выбираем следующую строку вниз
Cells(LastRow, 1).Offset(0, 0).Select
'Создаем месадж бокс
MsgBox "ЗАПИСЬ В ЖУРНАЛЕ УСПЕШНО СОЗДАНА" & vbLf & " " & vbLf & "СКОРО БУДЕТ ОТОБРАЖАТЬСЯ НОМЕР НОВОЙ ЗАЯВКИ", vbInformation
'Шаг 4: Захват последнего использованного номера строки
LastRow = Cells(Rows.Count, 2).End(xlUp).Row
'Шаг 5: Выбираем следующую строку вниз
Cells(LastRow, 2).Offset(1, 0).Select
End Sub
[/vba]
К сообщению приложен файл: 6031936.jpg (28.6 Kb)


Сообщение отредактировал Литр - Суббота, 06.12.2025, 14:14
 
Ответить
СообщениеДоброго дня, премодератор.
прошу разместить новую тему.
Название: Значение из ячейки в MsgBox по последней заполненной строке

Доброго дня, комрады!

Как заставить код искать последнюю заполненную ячейку не по столбцу "В" , а по массиву таблицы. Например (B2:P999)
В приложенном примере в бокс должно попасть значение "25-007"

VBA знаю на уровне копипастера ))
[vba]
Код

Sub КнопкаОкончание()

'Шаг 1: Объявляем переменные
Dim LastRow As Long
'Шаг 2: Захват последнего использованного номера строки
LastRow = Cells(Rows.Count, 2).End(xlUp).Row
'Шаг 3: Выбираем следующую строку вниз
Cells(LastRow, 1).Offset(0, 0).Select
'Создаем месадж бокс
MsgBox "ЗАПИСЬ В ЖУРНАЛЕ УСПЕШНО СОЗДАНА" & vbLf & " " & vbLf & "СКОРО БУДЕТ ОТОБРАЖАТЬСЯ НОМЕР НОВОЙ ЗАЯВКИ", vbInformation
'Шаг 4: Захват последнего использованного номера строки
LastRow = Cells(Rows.Count, 2).End(xlUp).Row
'Шаг 5: Выбираем следующую строку вниз
Cells(LastRow, 2).Offset(1, 0).Select
End Sub
[/vba]

Автор - Литр
Дата добавления - 05.12.2025 в 18:59
Kuzmich Дата: Пятница, 05.12.2025, 20:23 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 717
Репутация: 159 ±
Замечаний: 0% ±

Excel 2003
Цитата
Как заставить код искать последнюю заполненную ячейку не по столбцу "В" , а по массиву таблицы. Например (B2:P999)

[vba]
Код
Sub iMsgBox()
Dim iLastRow As Long
  iLastRow = Range("B:P").Find("*", Range("B1"), xlValues, xlWhole, xlByRows, xlPrevious).Row
  MsgBox "ЗАПИСЬ В ЖУРНАЛЕ УСПЕШНО СОЗДАНА" & vbLf & Cells(iLastRow, "A") & vbLf & "СКОРО БУДЕТ ОТОБРАЖАТЬСЯ НОМЕР НОВОЙ ЗАЯВКИ", vbInformation
End Sub
[/vba]
 
Ответить
Сообщение
Цитата
Как заставить код искать последнюю заполненную ячейку не по столбцу "В" , а по массиву таблицы. Например (B2:P999)

[vba]
Код
Sub iMsgBox()
Dim iLastRow As Long
  iLastRow = Range("B:P").Find("*", Range("B1"), xlValues, xlWhole, xlByRows, xlPrevious).Row
  MsgBox "ЗАПИСЬ В ЖУРНАЛЕ УСПЕШНО СОЗДАНА" & vbLf & Cells(iLastRow, "A") & vbLf & "СКОРО БУДЕТ ОТОБРАЖАТЬСЯ НОМЕР НОВОЙ ЗАЯВКИ", vbInformation
End Sub
[/vba]

Автор - Kuzmich
Дата добавления - 05.12.2025 в 20:23
Литр Дата: Суббота, 06.12.2025, 14:57 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 67
Репутация: 0 ±
Замечаний: 0% ±

2013
Kuzmich, hands

Спасибо, отлично работает!
 
Ответить
СообщениеKuzmich, hands

Спасибо, отлично работает!

Автор - Литр
Дата добавления - 06.12.2025 в 14:57
Литр Дата: Среда, 22.04.2026, 17:44 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 67
Репутация: 0 ±
Замечаний: 0% ±

2013
[vba]
Код
Sub Кнопка2()
ActiveWorkbook.Save
Dim LastRow As Long
iLastRow = Range("B:D").Find("*", Range("B1"), xlValues, xlWhole, xlByRows, xlPrevious).Row
MsgBox "ЗАПИСЬ В ЖУРНАЛЕ УСПЕШНО СОЗДАНА" & vbLf & vbLf & "НОМЕР НОВОЙ ЗАЯВКИ:   " & Cells(iLastRow, "A"), vbInformation
Cells(iLastRow, 2).Offset(1, 0).Select
End Sub
[/vba]

Kuzmich, малость подправил твой код и вот что еще нужно:
как изменить его, чтобы после выполнения в первой колонке то есть в "А" той строки на которую встала активная ячейка, значение увеличилось на +1 от значения в "А" строки выше.
То есть например: после выполнения макроса выделена ячейка В647, значит нужно что бы в А647 было А646+1
 
Ответить
Сообщение[vba]
Код
Sub Кнопка2()
ActiveWorkbook.Save
Dim LastRow As Long
iLastRow = Range("B:D").Find("*", Range("B1"), xlValues, xlWhole, xlByRows, xlPrevious).Row
MsgBox "ЗАПИСЬ В ЖУРНАЛЕ УСПЕШНО СОЗДАНА" & vbLf & vbLf & "НОМЕР НОВОЙ ЗАЯВКИ:   " & Cells(iLastRow, "A"), vbInformation
Cells(iLastRow, 2).Offset(1, 0).Select
End Sub
[/vba]

Kuzmich, малость подправил твой код и вот что еще нужно:
как изменить его, чтобы после выполнения в первой колонке то есть в "А" той строки на которую встала активная ячейка, значение увеличилось на +1 от значения в "А" строки выше.
То есть например: после выполнения макроса выделена ячейка В647, значит нужно что бы в А647 было А646+1

Автор - Литр
Дата добавления - 22.04.2026 в 17:44
gling Дата: Среда, 22.04.2026, 22:17 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2708
Репутация: 776 ±
Замечаний: 0% ±

2010
Здравствуйте.
Попробуйте добавить перед End Sub[vba]
Код
Cells(ActiveCell.Row, 1)=Cells(ActiveCell.Row-1, 1)+1
[/vba]


ЯД-41001506838083
 
Ответить
СообщениеЗдравствуйте.
Попробуйте добавить перед End Sub[vba]
Код
Cells(ActiveCell.Row, 1)=Cells(ActiveCell.Row-1, 1)+1
[/vba]

Автор - gling
Дата добавления - 22.04.2026 в 22:17
Литр Дата: Четверг, 23.04.2026, 12:52 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 67
Репутация: 0 ±
Замечаний: 0% ±

2013
gling,
Спасибо hands
 
Ответить
Сообщениеgling,
Спасибо hands

Автор - Литр
Дата добавления - 23.04.2026 в 12:52
Литр Дата: Вторник, 19.05.2026, 11:28 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 67
Репутация: 0 ±
Замечаний: 0% ±

2013
Доброго дня.

Прошу подсказать, как к этому коду добавить условие проверки заполненных колонок с 2 по 10 и если не будут заполнены эти колонки (текущей строки) то вывести MsgBox "ЗАПОЛНИ МИНИМАЛЬНЫЕ ЗНАЧЕНИЯ", vbCritical
Спасибо
 
Ответить
СообщениеДоброго дня.

Прошу подсказать, как к этому коду добавить условие проверки заполненных колонок с 2 по 10 и если не будут заполнены эти колонки (текущей строки) то вывести MsgBox "ЗАПОЛНИ МИНИМАЛЬНЫЕ ЗНАЧЕНИЯ", vbCritical
Спасибо

Автор - Литр
Дата добавления - 19.05.2026 в 11:28
gling Дата: Вторник, 19.05.2026, 22:41 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2708
Репутация: 776 ±
Замечаний: 0% ±

2010
Прошу подсказать
Здравствуйте.
Попробуйте ещё добавить перед End Sub
[vba]
Код
   If Application.CountA(Range(Cells(ActiveCell.Row, 2), Cells(ActiveCell.Row, 10))) < 9 Then
        MsgBox "ЗАПОЛНИ МИНИМАЛЬНЫЕ ЗНАЧЕНИЯ", vbCritical
    End If
[/vba]


ЯД-41001506838083
 
Ответить
Сообщение
Прошу подсказать
Здравствуйте.
Попробуйте ещё добавить перед End Sub
[vba]
Код
   If Application.CountA(Range(Cells(ActiveCell.Row, 2), Cells(ActiveCell.Row, 10))) < 9 Then
        MsgBox "ЗАПОЛНИ МИНИМАЛЬНЫЕ ЗНАЧЕНИЯ", vbCritical
    End If
[/vba]

Автор - gling
Дата добавления - 19.05.2026 в 22:41
Литр Дата: Среда, 20.05.2026, 09:42 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 67
Репутация: 0 ±
Замечаний: 0% ±

2013
Попробуйте ещё добавить перед End Sub


Нет, не так. Необходимо что бы перед MsgBox "ЗАПИСЬ В ЖУРНАЛЕ УСПЕШНО СОЗДАНА" код проверил что обязательно заполнены столбцы 2-10, и если нет то MsgBox "ЗАПОЛНИ МИНИМАЛЬНЫЕ ЗНАЧЕНИЯ" и End Sub
Ну и если 2-10 заполнены то MsgBox "ЗАПИСЬ В ЖУРНАЛЕ УСПЕШНО СОЗДАНА и End Sub


Сообщение отредактировал Литр - Среда, 20.05.2026, 09:49
 
Ответить
Сообщение
Попробуйте ещё добавить перед End Sub


Нет, не так. Необходимо что бы перед MsgBox "ЗАПИСЬ В ЖУРНАЛЕ УСПЕШНО СОЗДАНА" код проверил что обязательно заполнены столбцы 2-10, и если нет то MsgBox "ЗАПОЛНИ МИНИМАЛЬНЫЕ ЗНАЧЕНИЯ" и End Sub
Ну и если 2-10 заполнены то MsgBox "ЗАПИСЬ В ЖУРНАЛЕ УСПЕШНО СОЗДАНА и End Sub

Автор - Литр
Дата добавления - 20.05.2026 в 09:42
Hugo Дата: Среда, 20.05.2026, 12:38 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3862
Репутация: 819 ±
Замечаний: 0% ±

365
и End Sub
- так после vbCritical допишите [vba]
Код
: Exit Sub
[/vba]


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
Сообщение
и End Sub
- так после vbCritical допишите [vba]
Код
: Exit Sub
[/vba]

Автор - Hugo
Дата добавления - 20.05.2026 в 12:38
gling Дата: Среда, 20.05.2026, 14:44 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2708
Репутация: 776 ±
Замечаний: 0% ±

2010
Нет, не так.

Тогда так
[vba]
Код
Sub Кнопка2()
ActiveWorkbook.Save
Dim LastRow As Long
iLastRow = Range("B:D").Find("*", Range("B1"), xlValues, xlWhole, xlByRows, xlPrevious).Row
If Application.CountA(Range(Cells(iLastRow, 2), Cells(iLastRow, 10))) < 9 Then
        MsgBox "ЗАПОЛНИ МИНИМАЛЬНЫЕ ЗНАЧЕНИЯ", vbCritical
Else
        MsgBox "ЗАПИСЬ В ЖУРНАЛЕ УСПЕШНО СОЗДАНА" & vbLf & vbLf & "НОМЕР НОВОЙ ЗАЯВКИ:   " & Cells(iLastRow, "A"), vbInformation
        Cells(iLastRow, 2).Offset(1, 0).Select
        Cells(ActiveCell.Row, 1)=Cells(ActiveCell.Row-1, 1)+1
End If
End Sub
[/vba]


ЯД-41001506838083

Сообщение отредактировал gling - Четверг, 21.05.2026, 00:12
 
Ответить
Сообщение
Нет, не так.

Тогда так
[vba]
Код
Sub Кнопка2()
ActiveWorkbook.Save
Dim LastRow As Long
iLastRow = Range("B:D").Find("*", Range("B1"), xlValues, xlWhole, xlByRows, xlPrevious).Row
If Application.CountA(Range(Cells(iLastRow, 2), Cells(iLastRow, 10))) < 9 Then
        MsgBox "ЗАПОЛНИ МИНИМАЛЬНЫЕ ЗНАЧЕНИЯ", vbCritical
Else
        MsgBox "ЗАПИСЬ В ЖУРНАЛЕ УСПЕШНО СОЗДАНА" & vbLf & vbLf & "НОМЕР НОВОЙ ЗАЯВКИ:   " & Cells(iLastRow, "A"), vbInformation
        Cells(iLastRow, 2).Offset(1, 0).Select
        Cells(ActiveCell.Row, 1)=Cells(ActiveCell.Row-1, 1)+1
End If
End Sub
[/vba]

Автор - gling
Дата добавления - 20.05.2026 в 14:44
Литр Дата: Среда, 20.05.2026, 15:04 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 67
Репутация: 0 ±
Замечаний: 0% ±

2013
Hugo, Да, именно так. Работает как надо но если выделена ячейка из ряда последнего заполненного или любого ряда выше (ранее заполненного).
А если закончили ввод строки и выделена ячейка рядом ниже (например после ввода всех значений нажали Enter), то работает MsgBox "ЗАПОЛНИ МИНИМАЛЬНЫЕ ЗНАЧЕНИЯ" код понимает что ряд на котором находится в данный момент выделенная ячейка не заполнен и выдает не тот месадж.

Я его чутка подпилил и теперь вот что: как его подправить что бы он работал вне зависимости от положения выделенной ячейки, (рядом выше/на том ряду/рядом ниже).

[vba]
Код
Sub Кнопка2() ''''''''''''''''''''''''''''''''КНОПКА ОКОНЧАНИЕ
      Dim LastRow As Long
        iLastRow = Range("B:H").Find("*", Range("B1"), xlValues, xlWhole, xlByRows, xlPrevious).Row
         If Application.CountA(Range(Cells(ActiveCell.Row, 2), Cells(ActiveCell.Row, 7))) < 6 Then
        MsgBox "ЗАПОЛНИ МИНИМАЛЬНЫЕ ЗНАЧЕНИЯ", vbCritical: Exit Sub
    End If
      ActiveWorkbook.Save
        MsgBox "ЗАПИСЬ В ЖУРНАЛЕ УСПЕШНО СОЗДАНА" & vbLf & vbLf & "НОМЕР НОВОЙ ЗАЯВКИ:   " & Cells(iLastRow, "A"), vbInformation
        Cells(iLastRow, 2).Offset(1, 0).Select
End Sub
[/vba]
 
Ответить
СообщениеHugo, Да, именно так. Работает как надо но если выделена ячейка из ряда последнего заполненного или любого ряда выше (ранее заполненного).
А если закончили ввод строки и выделена ячейка рядом ниже (например после ввода всех значений нажали Enter), то работает MsgBox "ЗАПОЛНИ МИНИМАЛЬНЫЕ ЗНАЧЕНИЯ" код понимает что ряд на котором находится в данный момент выделенная ячейка не заполнен и выдает не тот месадж.

Я его чутка подпилил и теперь вот что: как его подправить что бы он работал вне зависимости от положения выделенной ячейки, (рядом выше/на том ряду/рядом ниже).

[vba]
Код
Sub Кнопка2() ''''''''''''''''''''''''''''''''КНОПКА ОКОНЧАНИЕ
      Dim LastRow As Long
        iLastRow = Range("B:H").Find("*", Range("B1"), xlValues, xlWhole, xlByRows, xlPrevious).Row
         If Application.CountA(Range(Cells(ActiveCell.Row, 2), Cells(ActiveCell.Row, 7))) < 6 Then
        MsgBox "ЗАПОЛНИ МИНИМАЛЬНЫЕ ЗНАЧЕНИЯ", vbCritical: Exit Sub
    End If
      ActiveWorkbook.Save
        MsgBox "ЗАПИСЬ В ЖУРНАЛЕ УСПЕШНО СОЗДАНА" & vbLf & vbLf & "НОМЕР НОВОЙ ЗАЯВКИ:   " & Cells(iLastRow, "A"), vbInformation
        Cells(iLastRow, 2).Offset(1, 0).Select
End Sub
[/vba]

Автор - Литр
Дата добавления - 20.05.2026 в 15:04
  • Страница 1 из 1
  • 1
Поиск:

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