вопос по пользоват. форме

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
pushkar
Сообщения: 17
Зарегистрирован: 17 янв 2008, 13:03

Здравствуйте! У меня вопрос:
По пользовательской форме: есть некая форма (см. файл, Лист2). Можно ли в ней реализовать следующее: в полях "от" и "до" я ввожу некоторые значения, на основании этих значений производится условное форматирование столбца допустим "H" (числа меняют цвет). И еще: можно ли фильтровать данные также по условию (если значения находятся в диапазоне "От" и "До" для зеленых, желтых и красных соответственно). Активным может быть только один цвет (при выделении checkbox-а) Заранее спасибо.

P.S. У меня есть более простой вариант: полями для "от" и "до" сделать ячейки (в файле Лист1). Это конечно, проще, но к сожалению, к моему файлу это не подходит.
Вложения
вопрос по форме.zip
(35.47 КБ) 25 скачиваний
Dim_ok
Сообщения: 51
Зарегистрирован: 03 июл 2007, 09:17

А что Вам мешает самому воспользоваться решениями пршлой Вашей темы? Мне кажется её можно взять за основу, добавив чек-боксы.
pushkar
Сообщения: 17
Зарегистрирован: 17 янв 2008, 13:03

Dim_ok писал(а):А что Вам мешает самому воспользоваться решениями пршлой Вашей темы? Мне кажется её можно взять за основу, добавив чек-боксы.
Наверное Вы меня не совсем поняли: меня интересует как (если это возможно) брать данные для условия которые я введу в поля для "От" и "До" (см. файл Лист2)? Например закрасить зеленым шрифт в ячейках столбца "H" если они находятся в диапазоне... (и значения условия берутся из полей "От" и "До" которые соответствует зеленой фигуре (кнопке)). С чек-боксами вроде все понятно.
Dim_ok
Сообщения: 51
Зарегистрирован: 03 июл 2007, 09:17

Да я Вас прекрасно понял, потому и сослался на прошлый Ваш вопрос. Например, Вы пропишете рекодером макрос автофильтра:

Код: Выделить всё

    Range("E5:F30").Select
    Selection.FormatConditions.Delete
    Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
        Formula1:="100", Formula2:="300"
    With Selection.FormatConditions(1).Font
        .Bold = True
        .Italic = False
        .ColorIndex = 3
    End With
Теперь подправте его под Ваши "от" и "до"

Код: Выделить всё

    Range("E5:F30").FormatConditions.Delete
    Range("E5:F30").FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
        Formula1:=Range("A1"), Formula2:=Range("B1")
    With Range("E5:F30").FormatConditions(1).Font
        .Bold = True
        .Italic = False
        .ColorIndex = 3
    End With
Теперь можно в А1 и В1 вставлять любые "от" и "до", запускать макрос и всё
pushkar
Сообщения: 17
Зарегистрирован: 17 янв 2008, 13:03

Dim_ok писал(а):Да я Вас прекрасно понял, потому и сослался на прошлый Ваш вопрос. Например, Вы пропишете рекодером макрос автофильтра:

Код: Выделить всё

    Range("E5:F30").Select
    Selection.FormatConditions.Delete
    Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
        Formula1:="100", Formula2:="300"
    With Selection.FormatConditions(1).Font
        .Bold = True
        .Italic = False
        .ColorIndex = 3
    End With
Теперь подправте его под Ваши "от" и "до"

Код: Выделить всё

    Range("E5:F30").FormatConditions.Delete
    Range("E5:F30").FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
        Formula1:=Range("A1"), Formula2:=Range("B1")
    With Range("E5:F30").FormatConditions(1).Font
        .Bold = True
        .Italic = False
        .ColorIndex = 3
    End With
Теперь можно в А1 и В1 вставлять любые "от" и "до", запускать макрос и всё

Ок, это понятно. Посмотрите пожалуйста в том файле (в последнем) Лист2. Там нет ячеек "А1" и "В2". Там есть форма, а в ней есть поля ("TextBox"-ы). Так вот значения чтобы брались из "TextBox"-ов. Это возможно?
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

Здравствуйте pushkar.
Можно "руками" в свойстве контрола "LincedCell" установить адрес связанной ячейки.
Или программно:

Код: Выделить всё

Sub LinkBox()
Dim i%
For i = 1 To 3
    ActiveSheet.OLEObjects("TextBox" & i + 3).LinkedCell = "E" & 10 + i
    ActiveSheet.OLEObjects("TextBox" & i).LinkedCell = "F" & 10 + i
Next
End Sub
Прочесть содержимое TextBox и использовать рекомендацию от Dim_ok:

Код: Выделить всё

dataBox2 = ActiveSheet.OLEObjects("TextBox2").Object.Text
... Formula2:=dataBox2...
Евгений.
pushkar
Сообщения: 17
Зарегистрирован: 17 янв 2008, 13:03

Спасибо всем за помощь, завтра разберусь
Ответить