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

Страницы: 1 2 3 След.
VBA - Ошибка при сравнении списков, Не могу найти причину ошибки 424
 
Цитата
написал:
ошибка 424
И? Я знаю что означает 424. Я не пойму почему она возникает. Переменные все объявлены и определены. При выведении в окошко immediate через debug.print тоже всё правильно и ошибка не возникает.
VBA - Ошибка при сравнении списков, Не могу найти причину ошибки 424
 
Цитата
написал:
Но все таки попробуйте
Попробовал, всё по прежнему. Насколько я помню, если бы было несовпадение типов, о котором вы говорите, была бы ошибка 13
VBA - Ошибка при сравнении списков, Не могу найти причину ошибки 424
 
Цитата
написал:
Byte Используйте тип данных для хранения двоичных данных.
Извините, не понял. В обоих источниках сравнения небольшое кол-во строк - до 30. Byte вполне подходит.
VBA - Ошибка при сравнении списков, Не могу найти причину ошибки 424
 
Товарищи, подскажите почему возникает ошибка в макросе. Останавливается на строке 18 с кодом ошибки 424.
В закомментированных строках Debug.Print выдаёт правильные значения.

Код
Dim ShData As Worksheet
Dim ListObj As ListObject
Dim ListR As ListRow
Dim a As Variant
Dim i As Byte

Set ShData = ThisWorkbook.Worksheets("data")
Set ListObj = ShData.ListObjects("работник_тб")
Set ListR = ListObj.ListRows(1)

    If cbx_exclude.Value = True Then
        cmb_rabotnik.RowSource = ""
        With CreateObject("scripting.dictionary")
            For Each ListR In ListObj.ListRows
'                Debug.Print uf_inputData.lbx_rabotniki.List(i, 0)
'                Debug.Print ListR.Range(1).Value
                For i = 0 To uf_inputData.lbx_rabotniki.ListCount
                    If ListR.Range(1).Value = uf_inputData.lbx_rabotniki.List(i, 0).Value Then
                        .Item(ListR.Range(1).Value) = vbNullString
                    End If
                Next i
            Next
            a = .keys
        End With
        uf_inputData.cmb_rabotnik.List = Application.Transpose(a)
    Else
        cmb_rabotnik.RowSource = "работник_тб"
    End If
Изменено: etrusk - 11.08.2023 15:09:11
VBA: обработка 900 строк занимает более 1,5 минут
 
обновление экрана отключено в вызывающей процедуре. А как ручной пересчет поставить? Не приходилось пока.
VBA: обработка 900 строк занимает более 1,5 минут
 
Товарищи, подскажите где я "накрутил" ненужное или куда думать чтоб оптимизировать код:
Код
Sub EditNextYear(ByRef yeargraf As Integer, wbName As String)

Dim DatListObj As ListObject
Dim DatListRow As ListRow

    With Workbooks(wbName).Sheets("график ТО")
        .Activate
'    редактирование нового графика ТО
        .Range("grafik_TO_tb[дата ТО/ диагн.]").ClearContents
        .Range("grafik_TO_tb[№ акта ТО]").ClearContents
        .Range("grafik_TO_tb[дата согласов.]").ClearContents
        .Range("grafik_TO_tb[организация проводившая ТО]").ClearContents
        .Range("grafik_TO_tb[дата след. ТО]").Cut Range("grafik_TO_tb[дата ТО/ диагн.]")
    End With
    
Set DatListObj = Workbooks(wbName).Worksheets("график ТО").ListObjects("grafik_TO_tb")
Set DatListRow = DatListObj.ListRows(1)

    yeargraf = Year(DatListRow.Range(13))
    
    For Each DatListRow In DatListObj.ListRows
        If DatListRow.Range(17).Value <> "" Then
            DatListRow.Range(12).Value = DatListRow.Range(17).Value
            DatListRow.Range(17).Value = ""
        End If
        If DatListRow.Range(25).Value <> "" And Year(DatListRow.Range(25)) = yeargraf - 1 Then
            DatListRow.Range(12).Value = DatListRow.Range(25).Value
        End If
        If DatListRow.Range(27).Value <> "запрет" Then
            If Year(DatListRow.Range(27)) = yeargraf Or Year(DatListRow.Range(27)) < yeargraf Then
                DatListRow.Range(31).Value = "диагностика"
            Else
                DatListRow.Range(31).Value = "т/о"
            End If
        End If
    Next DatListRow
    
    Workbooks(wbName).Sheets("график ТО").Range("grafik_TO_tb[дата ТО/ диагн.]").NumberFormat = "mmm/yyyy"

End Sub

всё работает корректно, но долго.
[ Закрыто] VBA: Оптимизация кода
 
Товарищи, подскажите в какую сторону думать чтоб оптимизировать код:
Код
Sub EditNextYear(ByRef yeargraf As Integer, wbName As String)

Dim DatListObj As ListObject
Dim DatListRow As ListRow

    With Workbooks(wbName).Sheets("график ТО")
        .Activate
'    редактирование нового графика ТО
        .Range("grafik_TO_tb[дата ТО/ диагн.]").ClearContents
        .Range("grafik_TO_tb[№ акта ТО]").ClearContents
        .Range("grafik_TO_tb[дата согласов.]").ClearContents
        .Range("grafik_TO_tb[организация проводившая ТО]").ClearContents
        .Range("grafik_TO_tb[дата след. ТО]").Cut Range("grafik_TO_tb[дата ТО/ диагн.]")
    End With
    
Set DatListObj = Workbooks(wbName).Worksheets("график ТО").ListObjects("grafik_TO_tb")
Set DatListRow = DatListObj.ListRows(1)

    yeargraf = Year(DatListRow.Range(13))
    
    For Each DatListRow In DatListObj.ListRows
        If DatListRow.Range(17).Value <> "" Then
            DatListRow.Range(12).Value = DatListRow.Range(17).Value
            DatListRow.Range(17).Value = ""
        End If
        If DatListRow.Range(25).Value <> "" And Year(DatListRow.Range(25)) = yeargraf - 1 Then
            DatListRow.Range(12).Value = DatListRow.Range(25).Value
        End If
        If DatListRow.Range(27).Value <> "запрет" Then
            If Year(DatListRow.Range(27)) = yeargraf Or Year(DatListRow.Range(27)) < yeargraf Then
                DatListRow.Range(31).Value = "диагностика"
            Else
                DatListRow.Range(31).Value = "т/о"
            End If
        End If
    Next DatListRow
    
    Workbooks(wbName).Sheets("график ТО").Range("grafik_TO_tb[дата ТО/ диагн.]").NumberFormat = "mmm/yyyy"

End Sub

Всё работает норм, но обработка таблицы в 900 строк занимает порядка полутора минут. Где я накрутил ненужное?
VBA: Макрос работает в режиме отладки и не работает в нормальном
 
Признаться не догадался бы что Variant нужно поставить, наполнен-то он будет строковыми значениями, из этого исходил.
Век живи, век учись, как говорится. Спасибо.

Заметил еще момент. Если массив наполнять подобным образом, то он создаёт двухмерный массив. Получается нужно будет переделывать ссылки в коде с arrMeh(i) на arrMeh(i, 1). Тогда заработает.
Изменено: etrusk - 21.02.2018 11:04:22
VBA: Макрос работает в режиме отладки и не работает в нормальном
 
Почему дольше понимаю, тем более двухмерные массивы. Правда мне пока не приходилось с ними работать.
Но у меня всё равно не работает. Для чистоты эксперимента создал отдельный файлик с макросом наполнения массива. Ошибку выдаёт ту же.
А вот код:
Код
Option Explicit

Sub test()

Dim arrMeh() As String
Dim lRow As Integer

    lRow = ThisWorkbook.Sheets("data").Cells(ThisWorkbook.Sheets("data").Rows.Count, 3).End(xlUp).Row

    With ThisWorkbook.Sheets("data")
        arrMeh = .Range(.[c2], .Range("c" & lRow)).Value
  End With

End Sub
 
VBA: Макрос работает в режиме отладки и не работает в нормальном
 
Везде написано что массивы заполняются циклами, о таком способе не знал. Но он у меня и не работает, пишет Type mismatch.
По With, спасибо, не заметил этого куска.
VBA: Макрос работает в режиме отладки и не работает в нормальном
 
Фух! Я понимал что где-то ссылаюсь не на ту книгу, не мог найти где. Про точки не додумал.

Большое спасибо.
VBA: Макрос работает в режиме отладки и не работает в нормальном
 
Странно, всё вроде разблокированно.
Код
Option Explicit
Public Wb As Workbook

Sub AnalysisMeh()

    Dim ishodnik As Workbook
    Dim ishSheets As Worksheet
    Dim arrMeh() As String
    Dim lRow As Integer
    Dim lCol As Integer
    Dim sCol As Byte
    Dim i As Integer
    Dim j As Byte
    
    
Set ishodnik = Workbooks(uf_SelectRazdat.lbx_files.Text)
Set ishSheets = ishodnik.Sheets("Сводная таблица_Общие данные_1")
Set Wb = Workbooks.Add

    Application.ScreenUpdating = False
    
    lRow = ishodnik.Sheets("data").Cells(ishodnik.Sheets("data").Rows.Count, 3).End(xlUp).Row - 1
    
    ReDim arrMeh(1 To lRow)
    For i = 1 To UBound(arrMeh)
        arrMeh(i) = ishodnik.Sheets("data").Cells(i + 1, 3).Value
    Next i
On Error Resume Next
    For i = 1 To UBound(arrMeh)
        ishSheets.PivotTables(1).PivotFields("эл.механик").CurrentPage = arrMeh(i)
        For j = 1 To 20 
            If ishSheets.Cells(j, 1).Value = "Сумма - выезд" Then
                sCol = j + 1
                Exit For
            End If
        Next j
        lCol = ishSheets.Cells(sCol, ishSheets.Columns.Count).End(xlToLeft).Column ' + 1
        lRow = ishSheets.Cells(ishSheets.Rows.Count, lCol).End(xlUp).Row
        If IsNumeric(ishSheets.Cells(lRow, lCol).Value) Then ' проверка не пусты ли итоги
'            Wb.ActiveSheet.Name = arrMeh(i)
            ishSheets.Cells(lRow, lCol).ShowDetail = True
'            ishodnik.ActiveSheet.Cells(1, 1).Select
            lCol = ishodnik.ActiveSheet.Cells(1, ishodnik.ActiveSheet.Columns.Count).End(xlToLeft).Column ' ïîñëåäíÿÿ êîëîíêà íà ñîçäàííîì ëèñòå
            lRow = ishodnik.ActiveSheet.Cells(ishodnik.ActiveSheet.Rows.Count, 1).End(xlUp).Row
            If Wb.Sheets(1).Cells(1, 1) <> "" Then
                Wb.Sheets.Add
            End If
            ishodnik.ActiveSheet.Range(Cells(1, 1), Cells(lRow, lCol)).Copy
            Wb.ActiveSheet.Name = arrMeh(i)
            With Wb.Sheets(arrMeh(i))
                .Cells(3, 1).PasteSpecial Paste:=xlPasteColumnWidths
                .Cells(3, 1).PasteSpecial Paste:=xlPasteAllUsingSourceTheme
'                .Cells(1, 1).Select
                .Cells(1, 1).Value = arrMeh(i)
                .Columns("D:H").EntireColumn.Hidden = True
                .Columns("J:J").EntireColumn.Hidden = True
                .Columns("L:P").EntireColumn.Hidden = True
                .Columns("R:S").EntireColumn.Hidden = True
            End With
            lRow = lRow + 2
            Application.DisplayAlerts = False
            ishodnik.ActiveSheet.Delete
            Application.DisplayAlerts = True
            Call ClearF(lRow, arrMeh(i))
            Call SortData(lRow, lCol, arrMeh(i))
            Call FormatD(lRow, lCol, arrMeh(i))
'            Wb.Sheets(1).Cells(1, 1).Select
            Wb.ActiveSheet.PageSetup.Orientation = xlLandscape 
            If Wb.Sheets.Count > 1 Then ' передвигаем активный лист в конец
                Wb.Sheets(arrMeh(i)).Move after:=Sheets(Wb.Sheets.Count)
            End If
        End If
    Next i
    ishSheets.PivotTables(1).PivotFields("эл.механик").CurrentPage = "(All)"
On Error GoTo 0
Application.ScreenUpdating = True
    
End Sub

Private Sub ClearF(lRow As Integer, ActSheet As String)

    Dim i As Integer
    
    For i = 3 To lRow
        If IsNumeric(Wb.Sheets(ActSheet).Cells(i, 2).Value) Then
            Wb.Sheets(ActSheet).Cells(i, 2).Value = Wb.Sheets(ActSheet).Cells(i, 2) * 1
        End If
        If IsNumeric(Wb.Sheets(ActSheet).Cells(i, 3).Value) Then
            Wb.Sheets(ActSheet).Cells(i, 3).Value = Wb.Sheets(ActSheet).Cells(i, 3) * 1
        End If
    Next i
    
End Sub

Private Sub SortData(lRow As Integer, lCol As Integer, ActSheet As String)

    With Wb.Sheets(ActSheet).Sort.SortFields
        .Clear
        .Add Key:=Range(Cells(4, 1), Cells(lRow, 1)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Add Key:=Range(Cells(4, 2), Cells(lRow, 2)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
        .Add Key:=Range(Cells(4, 3), Cells(lRow, 3)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Add Key:=Range(Cells(4, 17), Cells(lRow, 17)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    End With
    With Wb.Sheets(ActSheet).Sort
        .SetRange Range(Cells(3, 1), Cells(lRow, lCol))
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    
End Sub

Private Sub FormatD(lRow As Integer, lCol As Integer, ActSheet As String)

'    Debug.Print 1
    
    With Wb.Sheets(ActSheet)
        .Range(Cells(4, 2), Cells(lRow, 3)).HorizontalAlignment = xlRight
        .Columns("A:A").ColumnWidth = 15.5
        .Columns("I:I").ColumnWidth = 7 ' âûåçä/æàëîáà
        .Columns("Q:Q").ColumnWidth = 15 ' äàòà ïóñêà
        .Columns("T:T").ColumnWidth = 11 ' êðàòêàÿ ïðè÷èíà
        .Columns("U:U").ColumnWidth = 4.5 ' ïóùåí/íå ïóùåí
        .Columns("V:V").ColumnWidth = 45
        .Rows("3:3").RowHeight = 63
        .Range(Cells(3, 1), Cells(3, lCol)).WrapText = True
        .Range(Cells(3, 1), Cells(lRow, lCol)).VerticalAlignment = xlCenter
        .Cells(3, 21).Orientation = 90 ' ïóùåí/íå ïóùåí
        .Range(Cells(4, lCol), Cells(lRow, lCol)).WrapText = True
    End With

End Sub
Изменено: etrusk - 20.02.2018 15:48:27
VBA: Макрос работает в режиме отладки и не работает в нормальном
 
Товарищи, нужна Ваша помощь.
Озаботился созданием собственной надстройки, для этого пришлось переносить макросы из личной книги, с некоторыми доделками, в файл будущей надстройки. Столкнулся с проблемой - в режиме отладки всё работает как задумывалось, а когда запускаю в рабочем режиме, то как вроде пропускает часть кода. Например не производит форматирование на вновь созданном листе и не передвигает его в конец.

В двух словах работа макроса. Есть журнал заявок, в нём создана сводная таблица. Фильтром сводной идёт перебор электромехаников с открытием деталей. Лист с деталями сводной таблицы копируется в новую книгу на новый лист, там он форматируется и т.п. Макрос действует пока не переберет всех электромехаников в сводной.

Запускается всё на вкладке LTS-Red, кнопка Раздача.
Для работы Журнал заявок должен быть открыт.

Подскажите пожалуйста в чём проблема.

файлы:
https://yadi.sk/i/ByTpdC9J3Sbm5J
https://yadi.sk/d/bs90_9Z83Sbm7K
Изменено: etrusk - 20.02.2018 14:22:50
Не проходит проверку равенства значения comboBox с значением ячейки
 
Цитата
Sanja написал:
В КомбоБокс все значения текст
Как-то я это упустил. Буду знать.
Не проходит проверку равенства значения comboBox с значением ячейки
 
Цитата
Sanja написал: потому что 2015 и "2015" разные вещи
Я правильно понял что в ComboBox "2015" воспринято как текст, а в таблице как цифра?

Цитата
Sanja написал: Исправите, ошибка будет тут
Пробовал запустить форму при другом активном листе, всё равно нормально всё. Почему тут должна быть ошибка? Строка просто записывает "1" в пустую ячейку, либо прибавляет "1" если она там уже есть.

За помощь большое спасибо. Моих знаний пока не хватило, чтоб самому понять в чем было дело.
Не проходит проверку равенства значения comboBox с значением ячейки
 
Пардон! Да, так всё заработало отлично, я бы не догадался. Спасибо. С Вашей строкой больше ошибок у меня не выдаёт. Не знаю какие там ошибки валятся. Специально скачал файл по своей же ссылке и убрал файл "ИНЕССА".
Почему не работало в первом варианте так и не понял.
Изменено: etrusk - 02.03.2017 09:37:31
Не проходит проверку равенства значения comboBox с значением ячейки
 
Какие? Если например выбираю на вкладке "Вид работ" КВШ (замена), всё отрабатывает отлично. Когда перехожу на вкладку "год проведения" и выбираю из выпадающего списка "2015", отрисовывает только шапку таблички и усё. Залез отладчиком - не проходит проверку на которую я указал. Мне не понятно почему, всё построено по той же логике.
Изменено: etrusk - 02.03.2017 09:27:17
Не проходит проверку равенства значения comboBox с значением ячейки
 
Нет, не нужен. module_analysis, процедура FillAdress, строка
Код
If KapremRow.Range(5).Value = uf_analysis.cmb_year.Value Then
Изменено: etrusk - 02.03.2017 09:15:37
Не проходит проверку равенства значения comboBox с значением ячейки
 
Товарищи, просьба помочь найти где я ошибся.
при запуске анализа таблицы (2 страница книги) всё работает корректно, кроме анализа по "год проведения". Запустив отладчик, понял что не проходит проверку равенства значения comboBox с значением ячейки. Абсолютно не пойму почему, сделал так же как анализ по "вид работ" или "Управляющая компания", но не работает.
Вот ссылка на файл:
https://yadi.sk/d/POi4HwHz3EsdzU
Раскраска ячеек, приходящихся на выходной день
 
Что не применил для всего диапазона это понятно, просто для отладки возился с одним днем. А вот с закреплением не додумал. Смутило что при первой установке правила подкрашивало нужные ячейки, а при изменении только верхнюю.
За подсказку большое спасибо.
Раскраска ячеек, приходящихся на выходной день
 
Здравствуйте.
Товарищи, подскажите почему неполноценно работает подсвечивание выходных дней в графике работ который я делаю.
Определяю выходной день по простой формуле: =ДЕНЬНЕД(B2;2)>5
диапазон применения задаю =$B$3:$B$6

Всё почему-то работает только для ячейки B3. Ячейки B4:B6 остаются покрашенными/не покрашенными не смотря на изменение числа в ячейке B2.
В чём тут дело? Может я где-то не вижу очевидного?
Подсчет ячеек с шрифтом определённого цвета
 
Здравствуйте товарищи. Помогите решить задачку. Появилась необходимость проанализировать старые учетные данные, данные в ячейках различаются цветом шрифта. Написал небольшой макрос чтоб подсчитывал количество ячеек с шрифтом определённого цвета в выделенной области. Всё работает пока не натыкается на ячейку где шрифт выделен двумя разными цветами. Выдаёт ошибку "run-time 94. Invalid use of Null". Не знаю как побороть.
Вот сам код:
Код
Sub ПроверкаЖурналаЗаявок()

    Dim rngX As Range
    Dim c As Range
    Dim i As Integer
    Dim iM As Integer
    Dim iP As Integer
    Dim colF As Double

    
Set rngX = Selection
Set c = rngX.Cells

    i = 0
    iM = 0
    iP = 0
    
    For Each c In rngX
        If c.Value <> "" Then
            i = i + 1
            colF = c.Font.Color
            If colF = 1842204 Or colF = 1118481 Or colF = 0 Then
                iM = iM + 1
            End If
            If colF = 255 Or colF = 204 Then
                iP = iP + 1
            End If
        End If
    Next c
    
    Debug.Print "всего "; i
    Debug.Print "выход мех."; iM
    Debug.Print "простоев"; iP
    
    i = i - iM - iP
    
    Debug.Print "аварийка"; i

End Sub
Если нужен сам файлик, тоже сброшу.
VBA. Наполнение ComboBox
 
Кгм... Нашел ошибку, всё на поверхности. Тут дело не в кнопке, а в том что я не прописал в процедуре UserForm_Activate строку call FillYear. Вот что значит когда отвлекают на работе. :) С помощью примера с кнопкой это и понял. За помощь спасибо.
VBA. Наполнение ComboBox
 
Прошу прощения. Вот файл.
VBA. Наполнение ComboBox
 
Товарищи, подскажите в чем ошибка.
На форме нужно наполнить ComboBox списком каталогов по определенной маске. Не могу понять почему не заполняет. Если вывожу список в окошко Immediate, то всё работает.
Код
Sub FillYear()

    Dim coll
    Dim i As Byte
    Dim PathDir As String
    
    PathDir = ThisWorkbook.Path & "\"

    Set coll = SubFoldersCollection(PathDir, "20##")
 
    For i = 1 To coll.Count
'        Debug.Print coll(i)
        Form_Selection.cmb_year.AddItem coll(i)
    Next i

End Sub


Function SubFoldersCollection(ByVal FolderPath$, Optional ByVal Mask$) As Collection

    Dim FSO As Object
    Dim curfold As Object
    Dim folder As Object

    Set SubFoldersCollection = New Collection
    Set FSO = CreateObject("Scripting.FileSystemObject")

    
    On Error Resume Next: Set curfold = FSO.GetFolder(FolderPath$)
    
    For Each folder In curfold.SubFolders
        If folder.Path Like FolderPath$ & Mask$ Then SubFoldersCollection.Add Right(folder.Path, 4)
    Next folder
    
    Set FSO = Nothing
    
End Function
VBA. Копирование диапазонов
 
Без проблем, вот пример:
https://yadi.sk/d/KP9IPudnt5qno
в модуле Sub CopyList(), в ModuleFormPPR есть строка
Код
Cells(1, 1).Select
Если её закомментировать, заполнение таблицы графиком ППР происходит в 3 раза дольше.
Обнаружил случайно. Изначально сделал перевыделение чисто для "эстетики", Через время, при доработке кода, убрал как ненужную. Оказалось что это крайне негативно влияет на скорость заполнения графика (выполнение макроса).
Изменено: etrusk - 07.07.2016 15:12:32
VBA. Копирование диапазонов
 
Да, так работает. А если добавить
Код
Application.CutCopyMode = False
то еще и буфер очистится, не будет мельтешить ползущими полосочками. Но чем это лучше перевыделения? типа:
Код
cells(1, 1),Select 
Строк ведь больше.
Изменено: etrusk - 09.11.2017 17:50:57
VBA. Копирование диапазонов
 
нет, вставленный диапазон на 1 листе все равно остается выделенным.
VBA. Копирование диапазонов
 
Вот конкретный пример:
Код
Sub test()

    ThisWorkbook.Sheets(2).Range(ThisWorkbook.Sheets(2).Cells(1, 1), ThisWorkbook.Sheets(2).Cells(3, 3)).Copy
    ThisWorkbook.Sheets(1).Range(ThisWorkbook.Sheets(1).Cells(1, 1), ThisWorkbook.Sheets(1).Cells(3, 3)).PasteSpecial Paste:=xlPasteValues

End Sub

диапазон на первом листе остается выделенным после завершения макроса.
VBA. Копирование диапазонов
 
Здравствуйте. Товарищи, нужна помощь.
При копировании макросом диапазона ячеек из файла в файл (или с листа на лист, не важно), вставленный диапазон остается выделенным. Если этот диапазон анализировать или обрабатывать далее этим же макросом это существенно замедляет работу макроса. Помогает строчка типа:
Код
cells(1, 1).Select
А потом уже дальнейший код по обработке.
Но по-моему это какое-то корявое решение вопроса. Есть ли способ как-то убирать выделение вставленного диапазона?
Изменено: etrusk - 06.07.2016 15:02:12
Страницы: 1 2 3 След.
Наверх