Послідовний номер в Excel у визначеному діапазоні


0

Я шукав макрос з минулого тижня, але не пощастило поки. Якщо ви прохання вивести мене з проблеми, з якою я зіткнувся, Я створив шаблон Excel (використовував його для кодування списку).

Я шукаю те, що:

У колонці B ми повинні помістити серійні номери (послідовні номери) в активній клітині на основі значення, зазначеного в двох клітинках (A1 = початок серійного від: 5) & amp; (A2 = Кінець серійного номера: 25) Те, що мені потрібно, знаходиться в колонці B, де активована клітина, а діапазон початку і кінця забезпечується мною (користувачем), і я натискаю кнопку макросу, що генерує серійний номер з передбаченим початковим і кінцевим діапазоном від activecell до вниз.

Сподіваюся, що ви отримали мою думку.


Бореться з цим та іншими, а також ... Просто змінив код, який розділяє chuff, і прокоментував рядок ElseIf WorksheetFunction.CountA(Range("B:B")) <> 0 Then MsgBox "Please delete the existing values in column B." Exit Sub і додав рядок коду для зняття захисту з листа на початку коду і в кінцевому коді ActiveWorksheets.Protect Password:= "12345" для захисту листа.
Syed Chowdhury

Відповіді:


0

Якщо я розумію, що ви хочете, цей макрос повинен працювати для вас. Він перевіряє, щоб:

  • користувач вибрав клітинку у стовпці B для нової серії
  • кінцеве значення для серії, введеного користувачем, більше початкового значення
  • існуючі значення в стовпці B були очищені, перш ніж вставити нову серію.

Якщо будь-яка з цих умов не виконується, макрос попереджає користувача та виходить без додавання нової серії до робочого аркуша.

Sub NewSeries2()
    Dim seriesRng As Range
    Dim stepSize As Double
    Dim stopValue As Double

    If Intersect(Selection, Range("B:B")) Is Nothing Then
        MsgBox "Please select a cell in column B to start the series."
        Exit Sub
    ElseIf Range("A2").Value <= Range("A1").Value Then
        MsgBox "Ending value of the series cell A2 must be greater then the starting value in cell A1."
        Exit Sub
    ElseIf WorksheetFunction.CountA(Range("B:B")) <> 0 Then
        MsgBox "Please delete the existing values in column B."
        Exit Sub
    Else
        stepSize = 1
        stopValue = Range("A2").Value
        Selection.Value = Range("A1").Value
        Selection.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _
            Step:=stepSize, Stop:=stopValue, Trend:=False
    End If
End Sub

Це перезаписує існуючий серійний номер. Якщо серійний номер вже знаходиться в колонці, він повинен з'явитися повідомлення, щоб сповістити користувача про видалення існуючого серійного номера спочатку для створення нового серійного номера. По-друге, цей макрос не перевіряється, якщо початковий діапазон більший за кінцевий діапазон.
Syed Chowdhury

Будь ласка, дивіться оновлений код @Syad.
chuff

Syad, я виправив проблему з повідомленням про стовпець B. Будь ласка, подивіться, якщо хочете.
chuff

Вибачте Cheff, макрос не повністю слугує моїй меті, він вимагає, щоб повний стовпець B був порожній, Хоча я просто хочу, щоб з мого activecell і його нижче рядків немає серійних номерів, які перезаписуються. нижче, то макрос повинен працювати в іншому випадку повідомлення вікна поп-нагору. Сподіваюся, я можу змусити вас зрозуміти мою точку зору.
Syed Chowdhury

Крім того, макрос не працює на захищеному аркуші, хоча я тримав весь стовпець B розблокованим для виконання серіалізації, але це не дозволяє мені
Syed Chowdhury
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.