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

Страницы: 1
условное форматирование перегружает Excel, после ввода условного форматирования excel вылетает
 
Здравствуйте, адаптировал под себя систему из интернета. Строится на списках из нескольких умных таблицах на листе. Все функционировало, пока не ввел условное форматирование.
Описание задачи условного форматирования - в таблице Текущие_расходы колонка Резерв - то, что планируется оплатить. В группе Обязательные расходы сгруппированы требования, по которым не будет уведомлений или платежек (кредиты, тендера, страховки, "если вы хотите, чтобы ваш ребенок попал на эту экскурсию..."). И две задачи - 1) выделять синим все резервные строки (по которым нужно оплатить) 2) по мере приближения сроков оплаты подсвечивать строки без квитанций.
описание проблемы. после ввода условного форматирования невозможно ввести новую позицию - максимум выбрать из списка группу-подгруппу. (строка 28) . При попытке что-то ввести в любую ячейку Excel  вылетает.
голову сломал, как это подправить. Пробовал менять последовательности условного форматирования, включать-отключать остановку, разделять зоны условного форматирования, убирать частично группы условного форматирования. Работа восстанавливается только после удаления форматирования резервов. Прошу помочь найти ошибку.

Второй вопрос (возможно, надо будет вынести отдельно). При формировании нового месяца хотелось бы автоматический ввод резервирования по кредитам (или хотя бы напоминалку какую - такого числа кредитный платеж). С ремонтом у меня их сейчас чуть меньше 10 + отдельно оформление страховок. При быстротечности ремонтных событий что-то забываю.
обработка программно созданных элементов управления - решение, динамический массив элементов управления
 
В архиве нашел тему, в которой решение так и не было найдено. На других форумах конкретного решения так же особо не находится. Разобрался сам, хочу помочь тем, кому понадобится
Краткое описание - элементы управления на форму заносятся и убираются программно. Есть обработчик событий изменения элементов управления.
По большому счету, с листом не связаны - у меня это решение применено в макросах SolidWorks.
Поиск, суммирование и последующее удаление одинаковых значений, альтернативный вариант
 
За базу взял решение Юрия М.
Использую для формирования итоговых таблиц после выгрузки данных по общему проекту из SolidWorks.
Прежде всего , у меня в рабочей таблице по большим проектам около 3000 строк и циклами все проверять долго. Во-вторых, у меня не единственная таблица на странице. С оформлением и вспомогательными данными, она оказывается в серединке.
В третьих, проверяется не одна колонка. У меня есть выбранный пользователем перечень колонок, расставленных по приоритетам поиска.
Основной метод, который я применил - поиск (с продолжением).
Отрабатывая алгоритм, я столкнулся с тем, что в основной колонке может быть пустое значение. Например, для стандартных или покупных изделий отсутствует обозначение. В этом случае, если есть возможность, программа делает поиск по первой непустой колонке.
И последнее пояснение к программе. Данные для выбора пользователь выбирает через интерфейс, которые выкладывает данные в ячейки, невидимые явно для того, кто работает с таблицей. Можно придумать что-то попроще - маркировать столбцы, вручную делать списки и т.д. Для желающих, могу выложить сам файл в Excele 2013.
Собственно код программы (номера колонок даны для примера из прошлой темы):
Код
Sub arhiv_DoubleDel()
Dim Rw1 As Long, Rw2 As Long, cCm As Long, iCm As Long, iRw As Long
Dim Sums As Long, Par As Variant, manyPars As Boolean, lRw As Long
Dim tOK As Boolean, fndRg As Range, i As Long, fAdr As String
Dim fndRw As Long

'MsgBox "Программа DoubleDel - для поиска и удаления повторяющихся строк по заданным парамерам", vbInformation

cCm = 3 'Cells(77, 200).Value  'колонка с количеством
Rw1 = 1 'Cells(6, 200).Value + 1 '1я строка основной таблицы со значениями
Rw2 = 90 ' Cells(7, 200).Value 'последняя строка основной таблицы
If Trim(Cells(26, 200).Text) = "" Then  'проверка ведется по единственному параметру
    manyPars = False
    iCm = 2 'Cells(25, 200).Value 'колонка поиска
Else
    manyPars = True
    'в колонке 200, с 25 по 49 ряд хранятся колонки с параметрами, по которым производится сверка
    'параметры расположены в порядке приоритетов. По 1му параметру производится поиск
    lRw = Cells(25, 200).End(xlDown).Row
    Par = Application.WorksheetFunction.Transpose(Range(Cells(25, 200), Cells(lRw, 200)).Value)
    iCm = Par(LBound(Par)) 'колонка поиска
End If
iRw = Rw1
Do While iRw < Rw2
    'If iRw = 40 Then Stop
    'проверка на наличие непустой ячейки для поиска
    If Trim(Cells(iRw, iCm).Value) = "" Then
        tOK = False
        If manyPars Then
            For i = (LBound(Par) + 1) To UBound(Par)
                iCm = Par(i)
                If Trim(Cells(iRw, iCm).Value) <> "" Then tOK = True: Exit For
            Next
        End If
    Else
        tOK = True
    End If
    
    If tOK Then 'поиск непустой ячейки возможен
    tOK = False
    Sums = Cells(iRw, cCm).Value
    Set fndRg = Range(Cells(iRw + 1, iCm), Cells(Rw2, iCm)).Find(Cells(iRw, iCm).Value, , xlValues, xlWhole, xlByRows)
    If Not (fndRg Is Nothing) Then
    Debug.Print "Ищем: " & Cells(iRw, iCm).Value
    Debug.Print "Нашли: " & fndRg.Value
    Debug.Print "iRw: " & iRw & " - Rw2: " & Rw2 & " - fndRw: " & fndRg.Row
        fAdr = fndRg.Address
        Do
            fndRw = fndRg.Row
            tOK = True
            If manyPars Then
                For i = LBound(Par) To UBound(Par)
                    If Par(i) <> iCm Then
                    If Cells(fndRw, Par(i)).Value <> Cells(iRw, Par(i)).Value Then tOK = False: Exit For
                    End If
                Next
            End If
            If tOK Then 'найденная строка - дублер просматриваемой iRw
                Sums = Sums + Cells(fndRw, cCm).Value
                Rows(fndRw).Delete
                Rw2 = Rw2 - 1
            End If
            Set fndRg = Range(Cells(iRw + 1, iCm), Cells(Rw2, iCm)).FindNext(Cells(fndRw, iCm))
            If Not (fndRg Is Nothing) Then
                If fndRg.Address <> fAdr Then tOK = True Else tOK = False
            Else
                tOK = False
            End If
            If tOK Then
                Debug.Print "Нашли: " & fndRg.Value
                Debug.Print "iRw: " & iRw & " - Rw2: " & Rw2 & " - fndRw: " & fndRg.Row
            End If
        Loop While tOK
    Cells(iRw, cCm).Value = Sums
    End If
    If manyPars Then iCm = Par(LBound(Par)) 'восстанавливаем основной поиск
    End If 'пропускаем поиск по пустым ячейкам
iRw = iRw + 1
Loop
End Sub

для определения границ рабочей таблицы использую следующий алгоритм:
Код
Function arhiv_CurRegion(Optional firstCell As Range, Optional lastCell As Range) As Boolean
Dim selRng As Range
Dim Rw1 As Long, Rw2 As Long, Cm1 As Long, Cm2 As Long

On Error Resume Next

'для начала пользователь должен открыть нужный лист и выбрать ячейку в таблице
Set selRng = Application.InputBox("Выберите любую непустую ячейку в рабочей таблице (включая заголовки)", "Выбор рабочей таблицы", Type:=8)
If selRng Is Nothing Then
    MsgBox "Может, в следующий раз", vbInformation, "Выбор рабочей таблицы"
    sel_CurRegion = False
Else
    Set firstCell = selRng.CurrentRegion.Cells(1, 1)
    Rw1 = firstCell.Row
    Cm1 = firstCell.Column
    Cm2 = selRng.CurrentRegion.Columns(selRng.CurrentRegion.Columns.Count).Column
    Rw2 = selRng.CurrentRegion.Rows(selRng.CurrentRegion.Rows.Count).Row
    Set lastCell = Cells(Rw2, Cm2)
    sel_CurRegion = True
    Cells(6, 200).Value = Rw1
    Cells(6, 201).Value = Cm1
    Cells(7, 200).Value = Rw2
    Cells(7, 201).Value = Cm2
End If
Cells(5, 200).Value = sel_CurRegion
End Function
Передача фокуса с фигур на листе на ячейки под ними
 
Ранее была тема по работе с примечаниями http://www.planetaexcel.ru/forum/?FID=8&PAGE_NAME=read&TID=23225. В первом и последнем сообщении говорится о "преобразовании" стандартного значка примечания. Поскольку помещаю много важной информации  в примечания, которую в расчеты никак не включишь, то это удобный способ обратить внимание на эту информацию.
Беда в том, что расположенные фигуры (прямоугольники, треугольники или еще что), при наведении перехватывают фокус. За угол ячейки данные уже просто так не потянешь и когда документ проходит редактирование (не у автора), "колючки" фигур цепляются, фигуры переезжают, удаляются, часть данных для редакции так и остается не введенной.
Выход вижу либо в защите фигурок от ручного доступа или в принудительном переводе фокуса на ячейку.
Только как это сделать - не знаю. Если кто сталкивался, помогите
Страницы: 1
Наверх