Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
При перемещении/копировании строк через VBA меняются правила условного форматирования
 
Добрый вечер. Уже третий час мучаюсь с этой проблемой. Никак не получилось решить, поэтому прошу вас о помощи.
При перемещении несколько строк, можно ли как то сделать так чтобы не менялись правила условного форматирования? (приложил скрин)
Есть ли способ исправить это?

Вот код: (Я новичок в VBA, поэтому код не идеален. Но сам код работает)
Код
Private Sub переместитьвверх_Click()

    
    Dim i As Long
    Dim j As Long
    Dim k As Long
    Dim endRow As Long
    Dim selectedIndex As Long
    
    selectedIndex = список.ListIndex
    If selectedIndex <= 0 Then Exit Sub
    

    For i = 1 To Склад.Cells(Rows.count, "A").End(xlUp).row
        If Склад.Cells(i, "A") = ">" Then
            selectedIndex = selectedIndex - 1
            If selectedIndex < 0 Then Exit For
        End If
    Next i
    

    If i > 1 Then

        endRow = i + 1
        Do While endRow <= Склад.Cells(Rows.count, "A").End(xlUp).row And Склад.Cells(endRow, "A") <> ">"
            endRow = endRow + 1
        Loop
        endRow = endRow - 1
        

        j = i - 1
        Do While j > 1 And Склад.Cells(j, "A") <> ">"
            j = j - 1
        Loop
        

        For k = i To endRow
            Склад.Rows(k).Cut
            Склад.Rows(j).Insert Shift:=xlDown
            j = j + 1
        Next k
    End If


    UpdateList
End Sub

Изменено: Ayubov28 - 11.07.2024 17:49:52
Получение старой значении до изменений в Worksheet_Change
 

Добрый день. Я новичок в excel, в интернете много прочел, но не смогу решить. Сделал как умею. В общем, в столбце F можно вписать данные "Карта" "Наличка" "Долг",

Я сделал проверку на то чтобы если вписать долг, в столбце A добавится номер текущей строки (для последующей проверки). А когда в столбце F изменяю "Долг" на "Наличка" или "Карта", нужно вызывать код, но не используя столбец A.

Нужно именно при изменении с ДОЛГ!
Код
Private Sub Worksheet_Change(ByVal Target As Range)

    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    Application.EnableEvents = False ' Отключаем обработку событий
    For Each cell In Target
If Target.Cells.Count = 1 Then
            If Not Intersect(cell, Range("F2:F10000")) Is Nothing Then ' Должники
            
                If Target.Column = 6 And (Target.Value = "Наличка" Or Target.Value = "Карта") And cell.Offset(0, -5) > 0 Then
                    Target.CurrentRegion.Rows(Target.Row).Cut
                    Cells(Rows.Count, 2).End(xlUp).Offset(1, -1).Select
                    ActiveCell.Insert Shift:=xlDown
                    cell.Offset(0, -3).Value = Time
                    cell.Offset(0, -4).Value = Date
                    cell.Offset(0, -5).Value = ""
                Else
                    Dim PosLedN As Long
                    Dim ids As Long
                    PosLedN = Cells(Rows.Count, "F").End(xlUp).Row
                    For ids = PosLedN To 2 Step -1
                        If Cells(ids, "F") = "Долг" Then
                            Cells(ids, "A").Value = ids
                        Else
                            Cells(ids, "A").Value = ""
                        End If
                    Next ids
                End If
            End If
        End If
    next cell
End Sub
МАКРОС Скопирование изменяемую строку в конец
 
Здравсвуйте. Не могу реализовать, чтобы если в столбце F "Долг" и при изменении столбца F на "Наличка" или "Карта", Вся строка скопировалась на последнюю строку. Как можно реализовать это? Проверку смогу сделать, а вот скопировать не получается (Прикрепил скрин)
МаКРОС Создание копии листа раз в месяц
 
Сделал проверку при каждом запуске в начале месяце, ничего лучше не придумал)
Код
Private Sub Workbook_Open()
    If Day(Date) < 5 Then
        If SheetExist(ThisWorkbook.Name, Format(Date - 5, "MM.YYYY")) Then
        Else
            Application.Run "Лист4" & "." & "DelStariyMechyac"
        End If
    End If

End Sub

Function SheetExist(WbName As String, ShName As String) As Boolean
Dim mySheet As Worksheet
    For Each mySheet In Workbooks(WbName).Sheets
        If mySheet.Name = ShName Then
            SheetExist = True
            Exit Function
        End If
    Next
End Function

Изменено: Ayubov28 - 02.10.2023 17:17:50
Удаление строк через 30 дней после создания VBA
 
Здравствуйте. Хочу реализовать чтобы после 30 дней строка удалилась сама. Т.е проверять будет с столбца B
Вот что получилось у меня написать, но почему то не работает
Код
Private Sub Workbook_Open()
   
    Dim Дата As Date
    Dim lr As Long, i As Long
   
   
    ' Отключение монитора, чтобы ускорить макрос.
    Application.ScreenUpdating = False
   
    '1. Здесь укажите количество дней.
        ' Более 30 дней.
    tmpdat = Date - 30
   
    '2. Поиск последней строки в столбце B.
        ' End не ищет в скрытых строках.
    lr = Cells(Rows.Count, "B").End(xlUp).Row
   
    '3. Удаление строк.
    For i = lr To 1 Step -1
        If Cells(i, "B").Value < tmpdat Then
            Rows(i).Delete
        End If
    Next i
   
    '4. Включение монитора.
    Application.ScreenUpdating = True
   
End Sub
Образец прикрепил
Страницы: 1
Наверх