Добрый вечер. Уже третий час мучаюсь с этой проблемой. Никак не получилось решить, поэтому прошу вас о помощи. При перемещении несколько строк, можно ли как то сделать так чтобы не менялись правила условного форматирования? (приложил скрин) Есть ли способ исправить это?
Вот код: (Я новичок в 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
Добрый день. Я новичок в 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
Здравствуйте. Хочу реализовать чтобы после 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