Доброго дня, премодератор. прошу разместить новую тему. Название: Значение из ячейки в 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]
Доброго дня, премодератор. прошу разместить новую тему. Название: Значение из ячейки в 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
Как заставить код искать последнюю заполненную ячейку не по столбцу "В" , а по массиву таблицы. Например (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
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Литр
Прошу подсказать, как к этому коду добавить условие проверки заполненных колонок с 2 по 10 и если не будут заполнены эти колонки (текущей строки) то вывести MsgBox "ЗАПОЛНИ МИНИМАЛЬНЫЕ ЗНАЧЕНИЯ", vbCritical Спасибо
Доброго дня.
Прошу подсказать, как к этому коду добавить условие проверки заполненных колонок с 2 по 10 и если не будут заполнены эти колонки (текущей строки) то вывести MsgBox "ЗАПОЛНИ МИНИМАЛЬНЫЕ ЗНАЧЕНИЯ", vbCritical СпасибоЛитр
Нет, не так. Необходимо что бы перед MsgBox "ЗАПИСЬ В ЖУРНАЛЕ УСПЕШНО СОЗДАНА" код проверил что обязательно заполнены столбцы 2-10, и если нет то MsgBox "ЗАПОЛНИ МИНИМАЛЬНЫЕ ЗНАЧЕНИЯ" и End Sub Ну и если 2-10 заполнены то MsgBox "ЗАПИСЬ В ЖУРНАЛЕ УСПЕШНО СОЗДАНА и End Sub
Нет, не так. Необходимо что бы перед MsgBox "ЗАПИСЬ В ЖУРНАЛЕ УСПЕШНО СОЗДАНА" код проверил что обязательно заполнены столбцы 2-10, и если нет то MsgBox "ЗАПОЛНИ МИНИМАЛЬНЫЕ ЗНАЧЕНИЯ" и End Sub Ну и если 2-10 заполнены то MsgBox "ЗАПИСЬ В ЖУРНАЛЕ УСПЕШНО СОЗДАНА и End SubЛитр
Сообщение отредактировал Литр - Среда, 20.05.2026, 09:49
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
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
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