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

Страницы: 1
Условное форматирование
 
Цитата
vikttur написал:
Нет, файла будет маловато. Нужно с правилами ознакомиться.
Название темы должно отражать суть задачи. Сейчас там - только название инструмента. Предложите новое. Модераторы переименуют тем
Прикрепил файл. Вообще там таблица намного обширней, ужал её, чтобы влезть в лимит 100 кБ. Заголовки столбцов с условиями выделил жёлтым цветом. Нужно теперь, чтобы в той строке, где сработает условие первая ячейка на это реагировала. И вообще у меня стоит задача в том, чтобы абстрагироваться от того, какие правила установлены в тех ячейках, которые нужно мониторить. Мне нужно, чтобы при срабатывании правила в какой-либо из указанных ячеек в диапазоне реагировала одна итоговая ячейка. При чём это не должно зависеть от того, какие правила установлены в тех ячейках.
Как в названии темы отразить суть задачи я не знаю. Я и писал выше, что не могу сообразить как запрос в поиске сформулировать. С названием и описанием темы та же беда.
Условное форматирование
 
Пытался нагуглить, но не удалось. Суть в следующем:
У меня есть несколько столбцов с ячейками с условным форматированием. В каждом столбце правила в принципе одинаковые, но с разными условными значениями. Эти все правила прекрасно работают. Т. е. при срабатывании условия ячейка заливается красным цветом. Таблица большая и таких столбцов много. Т. е. получается длинная строка с этими ячейками, которые могут сработать после ввода данных, а могут и нет. И для того, чтобы увидеть сработало ли где-то правило или нет, нужно проматывать всю таблицу влево-вправо, чтобы обнаружить засветившиеся ячейки. И это не очень удобно. Мне же нужно теперь сделать сводную ячейку где-то в начале строки, которая бы отслеживала изменение этих контрольных ячеек и сама форматировалась. К примеру если после ввода данных ниодно из правил не сработало и все ввелось корректно, то эта сводная ячейка должна быть залита зелёным цветом. И тогда надобность мотать таблицу и проверять все контрольные ячейки отпадает. Если же после ввода данных сработало какое-либо или несколько правил в этой строке, то сводная ячейка должна залиться красным цветом. И тогда уже ищем где ошибка и исправляем.
Я не могу понять как это сделать с помощью условного форматирования и возможно ли это вообще с его помощью. Если же нужно к макросам прибегнуть, то непонятно как отследить, что где-то сработало правило? Может где-то уже и есть решение, просто я не мог сообразить как правильно по этой теме сформировать запрос и, соответственно, ничего не нашёл.
Заранее благодарен.  
Событие textbox.Enter в UserForm v.2
 
Цитата
ZVI написал:
Имитация событий Enter/Exit обычно делается по таймеру или в цикле с DoEvents.
Например так, если текстбоксы и комбобоксы не внутри фрейма или мультипейджа:
О. В таком варианте всё работает. Единственное, что я проверяю тип контрола не с помощью TypeName, а с помощью TypeOf. Но работает и так и так. Это то, что нужно. Спасибо большое  ;)
Событие textbox.Enter в UserForm v.2
 
Ну ок. Мне нужно при фокусе на текстбоксе выделять часть находящегося там текста. Как бы по логике это нужно делать по событию "Enter" и оно, в принципе срабатывает в случае с примером, когда обработчик пишется в модуле формы для конкретного текстбокса... Вообще абсурд какой-то - почему через модуль класса можно только некоторые события определить?
Событие textbox.Enter в UserForm v.2
 
Да это я прекрасно понял. Я же хочу узнать как иными окольными путями можно решить эту проблему. Может есть ещё какой-то способ и я о нем не знаю )
Событие textbox.Enter в UserForm v.2
 
Цитата
Юрий М написал:
По вопросу: если используется модуль класса, то обработка события Enter отсутствует. Раскройте в редакторе Правый КомбоБокс - там Вы не найдёте Enter, и Exit, например, не найдёте )
Ну эту картину я наблюдал. Правда мне эта информация никак не облегчает задачу по присвоению обработчика всем текстбоксам, кроме как поименно в модуле формы. А это очень дико будет выглядеть, так как их там 50 шт. с уникальными именами :/
Событие textbox.Enter в UserForm v.2
 
В общем проблема состоит вот в чём. У меня есть форма, на ней куча текстбоксов, кнопок и меток (но это не важно). Каждый текстбокс и кнопка имеют свои определённые имена (не дефолтные). Мне на каждую кнопку и текстбокс нужно было привязать по одному обработчику одного события. И я воспользовался вот этим прекрасным методом:

1) Добавил класс cm_ControlsEvents, добавил ему необходимые контролы и соответствующие обработчики:
Код
Public WithEvents txbx As MSForms.TextBox
Public WithEvents btn As MSForms.CommandButton

Private Sub btn_Click()
    // выполняется код
End Sub

Private Sub txbx_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    // выполняется код
End Sub

2) Далее в ощем модуле объявил массив этих самых классов

Код
Public controlsArray() As New cm_ControlsEvents

3) И в процессе инициализации формы я заполняю массив ссылками на соответствующие контролы:

Код
Private Sub UserForm_Initialize()
    Dim item As Control, countControls As Integer
    ReDim controlsArray(Me.Controls.Count)
    countControls = 0
    For Each item In Me.Controls
        If TypeOf item Is MSForms.TextBox Then
            Set controlsArray(countControls).txbx = item
            item.TabStop = True
            countControls = countControls + 1
        ElseIf TypeOf item Is MSForms.CommandButton Then
            If item.Tag = "Copy" Then
            Set controlsArray(countControls).btn = item
                item.TabStop = False
                countControls = countControls + 1
            End If
        ElseIf Not TypeOf item Is MSForms.Label Then
            item.TabStop = False
            countControls = countControls + 1
        End If
    Next item
End Sub

Тут в код можно особо не вникать, всё там нормально заполняется и работает.

И теперь по клику на любой из кнопок корректно срабатывает событие btn_Click() и, соответственно, при нажатии клавиш в текстбоксе чётко отрабатывает событие txbx_KeyPress().

В общем проблем не было до тех пор, пока мне не понадобилось использовать событие txbx_Enter(). Дело в том, что если я его добавляю в класс cm_ControlsEvents

Код
Public WithEvents txbx As MSForms.TextBox
Public WithEvents btn As MSForms.CommandButton

Private Sub btn_Click()
    // выполняется код
End Sub

Private Sub txbx_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    // выполняется код
End Sub

Private Sub txbx_Enter()
   // должен выполняться код
End Sub

то оно просто-напросто не срабатывает ни под каким предлогом. Однако если же я в модуле формы просто объявлю обработчик для какого-то конкретного текстбокса, вот так:

Код
Sub txbx_GPP_2_Enter()
    MsgBox "Event enter txbx!"
End Sub

то оно прекрасно срабатывает при фокусе на этом текстбоксе. Однако мне нужно этот обработчик поцепить на все текстбоксы в форме и я не понимаю почему именно это событие не срабатывает через класс cm_ControlsEvents.

Вот суть проблемы. Прошу гуру VBA поделиться дельным советом по этому поводу. Заранее благодарен  

Ссылка на ячейку с гиперссылкой
 
Да, вот только обратил внимание, что оно работает, если гиперссылка вставлена через диалоговое окно. У меня же они вставлены через формулу и в таком случае уже не работает этот вариант :/
Ссылка на ячейку с гиперссылкой
 
Вроде бы простой вопрос, но гугл мне пока не помог. Например у меня есть какая-то ячейка с гиперссылкой (пусть будет ячейка А1). Если я в другой ячейке (например В1) ссылаюсь на ячейку А1, то в ячейке В1 у меня будет отображаться название ссылки как текст. А мне же нужно, что бы в В1 появилась та же гиперссылка, что и в А1 и при изменении этой гиперссылки в ячейке А1 она соответственно менялась бы и в В1. Попробовал вставить формулу ГИПЕРССЫЛКА(A1), но результатом оказалось сообщение "Не удаётся открыть указанный файл" (а в ячейке А1 находится рабочая ссылка на файл).

Искренне надеюсь, что можно это выполнить без применения макросов. Но я пока не нашел решения этой проблемы. Прошу помощи у здешних гуру Excel  ;)
Привязка значений ячеек из одной книги к другой
 
Вобщем вопрос такой. Есть две книги с данными:



Задача состоит в том, чтобы связать ячейки 2-й книги с данными ячеек, которые будут вводиться в первой книге. Сложность заключается в том, что во второй книге ячейки, в которых указываются ссылки на ячейки в первой книге не смежные и функция автозаполнения работает некорректно. То есть я для наглядности выделил цветом те ячейки, в которые нужно привязать к ячейкам первой книги с тем же цветом. В первой же книге все ячейки смежные, во второй строго с диапазаном между ними в 4 строки. Может можно было бы использовать функцию смещения, но она, как я понимаю, работает только в пределах одного рабочего листа. Вобщем подскажите как можно выполнить эту операцию автоматически, не вводя данные вручную, потому что их очень много...
Страницы: 1
Наверх