Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / OptionButton в цикле / 21 сообщений из 21, страница 1 из 1
07.11.2006, 15:30
    #34109391
Dunjasha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton в цикле
Подскажите, как обработать OptionButton в цикле? Расположены на листе Excel, неограниченное количество. Если OptonButton=True, должны выполняться некоторые действия.
...
Рейтинг: 0 / 0
07.11.2006, 15:54
    #34109504
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton в цикле
используй массив контролей
каждый контроль имеет одно имя и разный номер
свойство index
в цикле перебрать контроли

вызов Option(index).checked
...
Рейтинг: 0 / 0
07.11.2006, 16:05
    #34109548
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton в цикле
VBA не поддерживает массивы контролов. Можно перебрать только UserForm.Controls целиком.
...
Рейтинг: 0 / 0
07.11.2006, 16:09
    #34109568
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton в цикле
прошу прощения
не увидел что Excel

перебор колекции обьектов и проверка по типу контроля
...
Рейтинг: 0 / 0
07.11.2006, 16:26
    #34109637
Dunjasha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton в цикле
помогите все это написать, пожалуйста
...
Рейтинг: 0 / 0
07.11.2006, 17:04
    #34109800
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton в цикле
Dunjashaпомогите все это написать, пожалуйста
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub CommandButton1_Click()
    Dim iCtrl As Control
    For Each iCtrl In Me.Controls
        If TypeName(iCtrl) = "OptionButton" Then
            If iCtrl.Value = - 1  Then MsgBox "Checked"
        End If
    Next iCtrl
End Sub
...
Рейтинг: 0 / 0
07.11.2006, 17:18
    #34109869
Dunjasha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton в цикле
выдает ошибку на For Each iCtrl In Me.Controls
...
Рейтинг: 0 / 0
07.11.2006, 17:53
    #34110013
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton в цикле
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub CommandButton1_Click()
    Dim iCtrl As Control
    For Each iCtrl In Workbooks(...).Worksheets(...).Controls
        If TypeName(iCtrl) = "OptionButton" Then
            If iCtrl.Value = - 1  Then MsgBox "Checked"
        End If
    Next iCtrl
End Sub
...
Рейтинг: 0 / 0
07.11.2006, 17:58
    #34110033
Dunjasha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton в цикле
vkodor
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub CommandButton1_Click()
    Dim iCtrl As Control
    For Each iCtrl In Workbooks(...).Worksheets(...).Controls
        If TypeName(iCtrl) = "OptionButton" Then
            If iCtrl.Value = - 1  Then MsgBox "Checked"
        End If
    Next iCtrl
End Sub


Object doesn't support this property or method
...
Рейтинг: 0 / 0
07.11.2006, 18:06
    #34110061
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton в цикле
А я не увидел, что на листе...
У листа нет коллекции Controls, обращение происходит напрямую: Worksheets(...).OptionButton1.Value, поэтому перебрать их получится только через CallByName.
...
Рейтинг: 0 / 0
07.11.2006, 18:16
    #34110099
Dunjasha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton в цикле
AntonariyА я не увидел, что на листе...
У листа нет коллекции Controls, обращение происходит напрямую: Worksheets(...).OptionButton1.Value, поэтому перебрать их получится только через CallByName.
Как это написать?
...
Рейтинг: 0 / 0
07.11.2006, 21:35
    #34110424
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton в цикле
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim x As Integer
Dim op As Object
On Error Resume Next
x =  1 
While Err.Number =  0 
    Set op = CallByName(Worksheets( 1 ), "OptionButton" & x, VbGet)
    If Err.Number =  0  Then
        Debug.Print op.Value
        x = x +  1 
    End If
Wend
...
Рейтинг: 0 / 0
08.11.2006, 16:51
    #34113188
Dunjasha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton в цикле
Antonariy
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim x As Integer
Dim op As Object
On Error Resume Next
x =  1 
While Err.Number =  0 
    Set op = CallByName(Worksheets( 1 ), "OptionButton" & x, VbGet)
    If Err.Number =  0  Then
        Debug.Print op.Value
        x = x +  1 
    End If
Wend

Объясните пожалуйста... Мне нужно определить номер OptionButton в котором точка, чтобы связать его с номером строки. Я не понимаю, откуда мне здесь его вытащить?
...
Рейтинг: 0 / 0
08.11.2006, 20:53
    #34113908
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton в цикле
Код: plaintext
1.
2.
3.
4.
5.
6.
While Err.Number =  0  'выполняем цикл до тех пор, пока попытка получить очередную OptionButton не вызовет ошибку
    Set op = CallByName(Worksheets( 1 ), "OptionButton" & x, VbGet) 'получение ссылки на очередную кнопку
    If Err.Number =  0  Then 'если ссылка получена...
        Debug.Print op.Value '... печатаем ее начение, True - выбрана, False - нет
        x = x +  1  'увеличиваем счетчик, значение которого определяет название кнопки
    End If
Wend
Если и после этого непонятно, завязывай с программированием.
...
Рейтинг: 0 / 0
08.11.2006, 21:41
    #34113972
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton в цикле
Dunjasha,

Вот тебе пример без On Error Resume Next и без CallByName:

Private Sub CommandButton1_Click()
Dim objOLE As OLEObject
Dim objWSht As Worksheet

Set objWSht = ActiveSheet

For Each objOLE In objWSht.OLEObjects
If objOLE.progID = "Forms.OptionButton.1" Then
objOLE.Shadow = objOLE.Object.Value
End If
Next objOLE

End Sub

Он рисует рамку вокруг отмеченной OptonButton и убирает с неотмеченных.

Пример для Control Toolbox контролей.

Успехов.

VladConn
...
Рейтинг: 0 / 0
08.11.2006, 21:53
    #34113977
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton в цикле
Antonariy,

Как ваш пример будет работать, если контролям приданы осмысленные имена (что на самом деле и должно ожидаться)?

VladConn
...
Рейтинг: 0 / 0
08.11.2006, 21:56
    #34113979
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton в цикле
A также в случае "провала" их сквозной нумерации?
...
Рейтинг: 0 / 0
08.11.2006, 22:09
    #34113988
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton в цикле
И с каких это пор значение счетчика определяет название кнопки? Лично я по этому вопросу с ним не советуюсь.

Мда..
...
Рейтинг: 0 / 0
08.11.2006, 22:14
    #34113995
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton в цикле
И кстати, вот это утверждение " ... поэтому перебрать их получится только через CallByName. " ложно.
...
Рейтинг: 0 / 0
09.11.2006, 09:53
    #34114509
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton в цикле
Да, насчет OLEObjects запамятовал, а насчет названий - я так понял, что если есть потребность перебирать их в цикле, значит их слишком много, чтобы обращаться к каждой по имени-отчеству, в таком случае непродуктивно задавать осмысленное имя каждой, вполне достаточно стандартных имен.
...
Рейтинг: 0 / 0
09.11.2006, 15:43
    #34116647
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OptionButton в цикле
OK
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / OptionButton в цикле / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]