Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2010, 20:26   #1
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию изменять свойство Caption объекта Frame

Здравствуйте.
В тестовом примере в зависимости от условия необходимо при клике по Label изменять свойство Caption объекта Frame1.
Код:
Public Sub Test()
    Dim i As Integer
    For i = 1 To 444
        If Sheets("Лист1").Cells(i, 24).Value = Sheets("Лист1").[y445].Value Then _
        UserForm1.Frame1.Caption = Sheets("Лист1").Cells(i, 1).Value Else _
        UserForm1.Frame1.Caption = "Параметры"
    Next
End Sub
То есть находим значение столбца 24 по условию
If Sheets("Лист1").Cells(i, 24).Value = Sheets("Лист1").[y445].Value Then
И переходим по строке найденного значения на столбец 1 и выполняем код
UserForm1.Frame1.Caption = Sheets("Лист1").Cells(i, 1).Value Else
Если нет значения в столбце 24 то выполняем код
UserForm1.Frame1.Caption = "Параметры"
В данном примере свойство Caption объекта Frame1 должно быть Test4
Что то не получается…
Вложения
Тип файла: rar test1.rar (13.9 Кб, 9 просмотров)
segail вне форума Ответить с цитированием
Старый 14.09.2010, 20:57   #2
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Добавьте Exit For
Код:
Public Sub Test()
    Dim i As Integer
    For i = 1 To 444
        If Sheets("Лист1").Cells(i, 24).Value = Sheets("Лист1").[x445].Value Then
            UserForm1.Frame1.Caption = Sheets("Лист1").Cells(i, 1).Value
            Exit For
        Else
            UserForm1.Frame1.Caption = "Параметры"
        End If
    Next
End Sub
Но лучше было бы использовать Find.
nilem вне форума Ответить с цитированием
Старый 14.09.2010, 21:16   #3
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Цитата:
Сообщение от nilem Посмотреть сообщение
Добавьте Exit For
Код:
Public Sub Test()
    Dim i As Integer
    For i = 1 To 444
        If Sheets("Лист1").Cells(i, 24).Value = Sheets("Лист1").[x445].Value Then
            UserForm1.Frame1.Caption = Sheets("Лист1").Cells(i, 1).Value
            Exit For
        Else
            UserForm1.Frame1.Caption = "Параметры"
        End If
    Next
End Sub
Но лучше было бы использовать Find.
Если нет значения в столбце 24 не срабатывает код после Else…
При таком варианте вроде срабатывает. Сбоев ни каких не будет, впоследствии?
Код:
Public Sub Test()
    Dim i As Integer
    For i = 1 To 444
        If Sheets("Лист1").Cells(i, 24).Value <> "" Then
            UserForm1.Frame1.Caption = Sheets("Лист1").Cells(i, 1).Value
            Exit For
        Else
            UserForm1.Frame1.Caption = "Параметры"
        End If
    Next
End Sub
segail вне форума Ответить с цитированием
Старый 15.09.2010, 08:14   #4
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

В Х445 стоит сумма =СУММ(X6:X444), т.е.
Sheets("Лист1").Cells(i, 24).Value = Sheets("Лист1").[X445].Value
выполнится при всех пустых в X1:X444 или единственном действительном значении в X1:X444.
При всех пустых цикл завершается на 1-й итерации и Caption назначается из Sheets("Лист1").Cells(1, 1).Value.

Если взять If Sheets("Лист1").Cells(i, 24).Value <> "" Then, то Caption будет соответствовать первой непустой в X1:X444, остальные ячейки из этого диапазона не будут участвовать в сравнении.
Тогда лучше написать:
Код:
Public Sub Test()
    Dim i As Integer
    UserForm1.Frame1.Caption = "Параметры" 'это можно установить в свойствах
    For i = 6 To 444
        If Sheets("Лист1").Cells(i, 24).Value <> "" Then
            UserForm1.Frame1.Caption = Sheets("Лист1").Cells(i, 1).Value
            Exit For
        End If
    Next i
End Sub
В общем, нужно определиться с критериями.
nilem вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Свойство объекта fikret123 Общие вопросы Delphi 4 21.03.2010 14:26
Как изменять свойства и функцыи объекта в памяти? VintProg Общие вопросы Delphi 2 10.07.2009 15:29
Свойство Options объекта TStringGrid allmaestro Помощь студентам 1 18.10.2008 13:10
задать свойство Caption на Русском для кнопки mbYes в сообщении MessageDlg Plastik-X БД в Delphi 4 27.04.2008 13:52
как ввести символы #13 и #10 в свойство Caption shurik_7866 Общие вопросы Delphi 12 16.03.2008 16:12