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

Вход

Регистрация

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

 

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

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

EXCEL 2013
Добрый день! Есть файлик во вложении, там есть форма, где при вводе на первом листе автоматически заполняется строка на другом листе ответственного лица, не могу сделать автоматическую нумерация, просто чтобы автоматом заполнялась форма. Написал строку, назначил ответственного и сразу же проставилась нумерация на первом листе и на другом куда, эта строка скопируется, как это реализовать?
К сообщению приложен файл: 0585101.xlsm (46.8 Kb)


Сообщение отредактировал flywithme1299 - Среда, 26.04.2023, 10:35
 
Ответить
СообщениеДобрый день! Есть файлик во вложении, там есть форма, где при вводе на первом листе автоматически заполняется строка на другом листе ответственного лица, не могу сделать автоматическую нумерация, просто чтобы автоматом заполнялась форма. Написал строку, назначил ответственного и сразу же проставилась нумерация на первом листе и на другом куда, эта строка скопируется, как это реализовать?

Автор - flywithme1299
Дата добавления - 26.04.2023 в 10:34
flywithme1299 Дата: Среда, 26.04.2023, 11:45 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 0 ±
Замечаний: 20% ±

EXCEL 2013
Либо преобразовать эту формулу в макрос
Код
=ЕСЛИ(ЕПУСТО(C2);"";СЧЁТЗ($C$2:C2))
Так это работает конечно. но блин, нужно это все спрятать


Сообщение отредактировал Serge_007 - Среда, 26.04.2023, 12:17
 
Ответить
СообщениеЛибо преобразовать эту формулу в макрос
Код
=ЕСЛИ(ЕПУСТО(C2);"";СЧЁТЗ($C$2:C2))
Так это работает конечно. но блин, нужно это все спрятать

Автор - flywithme1299
Дата добавления - 26.04.2023 в 11:45
VBAdevelope Дата: Среда, 26.04.2023, 13:00 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 4 ±
Замечаний: 20% ±

2013
Цитата flywithme1299, 26.04.2023 в 11:45, в сообщении № 2 ()
как это реализовать?

Ну макросом точно можно отслеживать события. Закиньте файл, сохранённый в .xlsx сюда или мне на почту и опишите, в какие листы вставлять и принцип выбора ячейки для заполнения.


Макросы VBA Excel, Word на заказ.
Сказать спасибо на Юмани: 410015093172871
 
Ответить
Сообщение
Цитата flywithme1299, 26.04.2023 в 11:45, в сообщении № 2 ()
как это реализовать?

Ну макросом точно можно отслеживать события. Закиньте файл, сохранённый в .xlsx сюда или мне на почту и опишите, в какие листы вставлять и принцип выбора ячейки для заполнения.

Автор - VBAdevelope
Дата добавления - 26.04.2023 в 13:00
flywithme1299 Дата: Среда, 26.04.2023, 13:21 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 0 ±
Замечаний: 20% ±

EXCEL 2013
VBAdevelope, я выделил желтым, где планируется автонумерация строк. но только тогда, когда заполнится строка или соседняя ячейка в этой строке, автонумерация всегда по порядку, то есть 1.2.3.4.5.6.7, и т.д.
К сообщению приложен файл: tablica1.xlsx (39.3 Kb)
 
Ответить
СообщениеVBAdevelope, я выделил желтым, где планируется автонумерация строк. но только тогда, когда заполнится строка или соседняя ячейка в этой строке, автонумерация всегда по порядку, то есть 1.2.3.4.5.6.7, и т.д.

Автор - flywithme1299
Дата добавления - 26.04.2023 в 13:21
VBAdevelope Дата: Среда, 26.04.2023, 15:51 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 4 ±
Замечаний: 20% ±

2013
Это вставьте в свою книгу в модуль "Эта книга"
[vba]
Код
Const sCol = "J"
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim oWB As Workbook
Dim oSourceSh As Worksheet
    If Sh.Name <> "Заполнение" Then Exit Sub
    Set oWB = ActiveWorkbook
    iCol = Target.Column
    sAddr = Sh.Cells(1, iCol).Address
    sAddr = Left(sAddr, InStrRev(sAddr, "$"))
    If Replace(sAddr, "$", "") = sCol Then
        iRow = Target.Row
        sVal = Trim(Target.Value)

        iAnsw = MsgBox("Заполнять строку для " & sVal & "?", vbYesNo)
        If iAnsw = 6 Then
            If iRow > 1 Then
                If Sh.Cells(iRow - 1, 1).Value = "¹ ï/ï" Then
                    Sh.Cells(iRow, 1).Value = 1
                Else
                    Sh.Cells(iRow, 1).Value = Sh.Cells(iRow - 1, 1).Value + 1
                End If
            End If
            sVal = fCheckOnValue(oWB, sVal)
            Set oSourceSh = oWB.Worksheets(sVal)
            iLast = oSourceSh.Cells(oSourceSh.Rows.Count, 1).End(xlUp).Row
            If oSourceSh.Range("A" & iLast) = "№ п/п" Then
                iCurrent = 1
            Else
                iCurrent = iLast + 1
            End If
            iFullFill = iLast + 1
            Application.EnableEvents = False
            'Nomer
            oSourceSh.Cells(iFullFill, 1).Value = iCurrent
            '# data
            'Если надо номер + дата, то удалить знак комментирования в конце след строки
            oSourceSh.Cells(iFullFill, 2).Value = Sh.Cells(iRow, 2) '& " " & Sh.Cells(iRow, 3)
            'Naim
            oSourceSh.Cells(iFullFill, 3).Value = Sh.Cells(iRow, 4)
            'Char
            oSourceSh.Cells(iFullFill, 4).Value = Sh.Cells(iRow, 5)
            'Analog
            oSourceSh.Cells(iFullFill, 5).Value = Sh.Cells(iRow, 6)
            'Count
            oSourceSh.Cells(iFullFill, 6).Value = Sh.Cells(iRow, 7)
            'Ed izm
            oSourceSh.Cells(iFullFill, 7).Value = Sh.Cells(iRow, 8)
            'Naim oborud
            oSourceSh.Cells(iFullFill, 8).Value = Sh.Cells(iRow, 9)
            'Prime4
            oSourceSh.Cells(iFullFill, 9).Value = Sh.Cells(iRow, 11)
            Application.EnableEvents = True
        End If
    End If
End Sub
Function fCheckOnValue(ByRef oWB As Workbook, ByVal sVal As String)
Dim oSh As Worksheet
    For Each oSh In oWB.Worksheets
        If Trim(oSh.Name) = sVal Then
            fCheckOnValue = oSh.Name
            Exit Function
        End If
    Next oSh
End Function
[/vba]


Макросы VBA Excel, Word на заказ.
Сказать спасибо на Юмани: 410015093172871


Сообщение отредактировал VBAdevelope - Среда, 26.04.2023, 16:30
 
Ответить
СообщениеЭто вставьте в свою книгу в модуль "Эта книга"
[vba]
Код
Const sCol = "J"
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim oWB As Workbook
Dim oSourceSh As Worksheet
    If Sh.Name <> "Заполнение" Then Exit Sub
    Set oWB = ActiveWorkbook
    iCol = Target.Column
    sAddr = Sh.Cells(1, iCol).Address
    sAddr = Left(sAddr, InStrRev(sAddr, "$"))
    If Replace(sAddr, "$", "") = sCol Then
        iRow = Target.Row
        sVal = Trim(Target.Value)

        iAnsw = MsgBox("Заполнять строку для " & sVal & "?", vbYesNo)
        If iAnsw = 6 Then
            If iRow > 1 Then
                If Sh.Cells(iRow - 1, 1).Value = "¹ ï/ï" Then
                    Sh.Cells(iRow, 1).Value = 1
                Else
                    Sh.Cells(iRow, 1).Value = Sh.Cells(iRow - 1, 1).Value + 1
                End If
            End If
            sVal = fCheckOnValue(oWB, sVal)
            Set oSourceSh = oWB.Worksheets(sVal)
            iLast = oSourceSh.Cells(oSourceSh.Rows.Count, 1).End(xlUp).Row
            If oSourceSh.Range("A" & iLast) = "№ п/п" Then
                iCurrent = 1
            Else
                iCurrent = iLast + 1
            End If
            iFullFill = iLast + 1
            Application.EnableEvents = False
            'Nomer
            oSourceSh.Cells(iFullFill, 1).Value = iCurrent
            '# data
            'Если надо номер + дата, то удалить знак комментирования в конце след строки
            oSourceSh.Cells(iFullFill, 2).Value = Sh.Cells(iRow, 2) '& " " & Sh.Cells(iRow, 3)
            'Naim
            oSourceSh.Cells(iFullFill, 3).Value = Sh.Cells(iRow, 4)
            'Char
            oSourceSh.Cells(iFullFill, 4).Value = Sh.Cells(iRow, 5)
            'Analog
            oSourceSh.Cells(iFullFill, 5).Value = Sh.Cells(iRow, 6)
            'Count
            oSourceSh.Cells(iFullFill, 6).Value = Sh.Cells(iRow, 7)
            'Ed izm
            oSourceSh.Cells(iFullFill, 7).Value = Sh.Cells(iRow, 8)
            'Naim oborud
            oSourceSh.Cells(iFullFill, 8).Value = Sh.Cells(iRow, 9)
            'Prime4
            oSourceSh.Cells(iFullFill, 9).Value = Sh.Cells(iRow, 11)
            Application.EnableEvents = True
        End If
    End If
End Sub
Function fCheckOnValue(ByRef oWB As Workbook, ByVal sVal As String)
Dim oSh As Worksheet
    For Each oSh In oWB.Worksheets
        If Trim(oSh.Name) = sVal Then
            fCheckOnValue = oSh.Name
            Exit Function
        End If
    Next oSh
End Function
[/vba]

Автор - VBAdevelope
Дата добавления - 26.04.2023 в 15:51
flywithme1299 Дата: Среда, 26.04.2023, 16:13 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 0 ±
Замечаний: 20% ±

EXCEL 2013
VBAdevelope, Работает, только все время это окно вылазит и не заполняет первый лист
К сообщению приложен файл: 2148936.jpg (12.0 Kb)
 
Ответить
СообщениеVBAdevelope, Работает, только все время это окно вылазит и не заполняет первый лист

Автор - flywithme1299
Дата добавления - 26.04.2023 в 16:13
VBAdevelope Дата: Среда, 26.04.2023, 16:31 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 4 ±
Замечаний: 20% ±

2013
Поправил код, скопируйте ещё раз.


Макросы VBA Excel, Word на заказ.
Сказать спасибо на Юмани: 410015093172871
 
Ответить
СообщениеПоправил код, скопируйте ещё раз.

Автор - VBAdevelope
Дата добавления - 26.04.2023 в 16:31
flywithme1299 Дата: Среда, 26.04.2023, 16:35 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 0 ±
Замечаний: 20% ±

EXCEL 2013
VBAdevelope, теперь так
К сообщению приложен файл: 4532789.jpg (30.0 Kb)
 
Ответить
СообщениеVBAdevelope, теперь так

Автор - flywithme1299
Дата добавления - 26.04.2023 в 16:35
VBAdevelope Дата: Четверг, 27.04.2023, 11:20 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 4 ±
Замечаний: 20% ±

2013
flywithme1299, Протестил и поменял. Замените эту процедуру на этот код
[vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim oWB As Workbook
Dim oSourceSh As Worksheet
    'On Error GoTo ResumeLine
    If Sh.Name <> "Заполнение" Then Exit Sub
    Set oWB = ActiveWorkbook
    iCol = Target.Column
    sAddr = Sh.Cells(1, iCol).Address
    sAddr = Left(sAddr, InStrRev(sAddr, "$"))
    If Replace(sAddr, "$", "") = sCol Then
        iRow = Target.Row
        sVal = Trim(Target.Value)

        iAnsw = MsgBox("Заполнять строку для " & sVal & "?", vbYesNo)
        If iAnsw = 6 Then
            Application.EnableEvents = False
            If iRow > 1 Then
                If Sh.Cells(iRow - 1, 1).Value = "№ п/п" Then
                    Sh.Cells(iRow, 1).Value = 1
                Else
                    Sh.Cells(iRow, 1).Value = Sh.Cells(iRow - 1, 1).Value + 1
                End If
            End If
            sVal = fCheckOnValue(oWB, sVal)
            Set oSourceSh = oWB.Worksheets(sVal)
            iLast = oSourceSh.Cells(oSourceSh.Rows.Count, 1).End(xlUp).Row
            If oSourceSh.Range("A" & iLast) = "№ п/п" Then
                iCurrent = 1
            Else
                iCurrent = oSourceSh.Range("A" & iLast).Value + 1
            End If
            iFullFill = iLast + 1
            'Nomer
            oSourceSh.Cells(iFullFill, 1).Value = iCurrent
            '# data
            'Если надо номер + дата, то удалить знак комментирования в конце след строки
            oSourceSh.Cells(iFullFill, 2).Value = Sh.Cells(iRow, 2) '& " " & Sh.Cells(iRow, 3)
            'Naim
            oSourceSh.Cells(iFullFill, 3).Value = Sh.Cells(iRow, 4)
            'Char
            oSourceSh.Cells(iFullFill, 4).Value = Sh.Cells(iRow, 5)
            'Analog
            oSourceSh.Cells(iFullFill, 5).Value = Sh.Cells(iRow, 6)
            'Count
            oSourceSh.Cells(iFullFill, 6).Value = Sh.Cells(iRow, 7)
            'Ed izm
            oSourceSh.Cells(iFullFill, 7).Value = Sh.Cells(iRow, 8)
            'Naim oborud
            oSourceSh.Cells(iFullFill, 8).Value = Sh.Cells(iRow, 9)
            'Prime4
            oSourceSh.Cells(iFullFill, 9).Value = Sh.Cells(iRow, 11)
            Application.EnableEvents = True
        End If
    End If
'Exit Sub
'ResumeLine:
'    If Err Then MsgBox Err.Number & vbCr & Err.Source & vbCr & Err.Description
'    Application.EnableEvents = True
End Sub
[/vba]


Макросы VBA Excel, Word на заказ.
Сказать спасибо на Юмани: 410015093172871
 
Ответить
Сообщениеflywithme1299, Протестил и поменял. Замените эту процедуру на этот код
[vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim oWB As Workbook
Dim oSourceSh As Worksheet
    'On Error GoTo ResumeLine
    If Sh.Name <> "Заполнение" Then Exit Sub
    Set oWB = ActiveWorkbook
    iCol = Target.Column
    sAddr = Sh.Cells(1, iCol).Address
    sAddr = Left(sAddr, InStrRev(sAddr, "$"))
    If Replace(sAddr, "$", "") = sCol Then
        iRow = Target.Row
        sVal = Trim(Target.Value)

        iAnsw = MsgBox("Заполнять строку для " & sVal & "?", vbYesNo)
        If iAnsw = 6 Then
            Application.EnableEvents = False
            If iRow > 1 Then
                If Sh.Cells(iRow - 1, 1).Value = "№ п/п" Then
                    Sh.Cells(iRow, 1).Value = 1
                Else
                    Sh.Cells(iRow, 1).Value = Sh.Cells(iRow - 1, 1).Value + 1
                End If
            End If
            sVal = fCheckOnValue(oWB, sVal)
            Set oSourceSh = oWB.Worksheets(sVal)
            iLast = oSourceSh.Cells(oSourceSh.Rows.Count, 1).End(xlUp).Row
            If oSourceSh.Range("A" & iLast) = "№ п/п" Then
                iCurrent = 1
            Else
                iCurrent = oSourceSh.Range("A" & iLast).Value + 1
            End If
            iFullFill = iLast + 1
            'Nomer
            oSourceSh.Cells(iFullFill, 1).Value = iCurrent
            '# data
            'Если надо номер + дата, то удалить знак комментирования в конце след строки
            oSourceSh.Cells(iFullFill, 2).Value = Sh.Cells(iRow, 2) '& " " & Sh.Cells(iRow, 3)
            'Naim
            oSourceSh.Cells(iFullFill, 3).Value = Sh.Cells(iRow, 4)
            'Char
            oSourceSh.Cells(iFullFill, 4).Value = Sh.Cells(iRow, 5)
            'Analog
            oSourceSh.Cells(iFullFill, 5).Value = Sh.Cells(iRow, 6)
            'Count
            oSourceSh.Cells(iFullFill, 6).Value = Sh.Cells(iRow, 7)
            'Ed izm
            oSourceSh.Cells(iFullFill, 7).Value = Sh.Cells(iRow, 8)
            'Naim oborud
            oSourceSh.Cells(iFullFill, 8).Value = Sh.Cells(iRow, 9)
            'Prime4
            oSourceSh.Cells(iFullFill, 9).Value = Sh.Cells(iRow, 11)
            Application.EnableEvents = True
        End If
    End If
'Exit Sub
'ResumeLine:
'    If Err Then MsgBox Err.Number & vbCr & Err.Source & vbCr & Err.Description
'    Application.EnableEvents = True
End Sub
[/vba]

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

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