Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Упростить с помощью цикла


Автор: Izuver 18.9.2006, 23:37
Хочу уменьшить код:
OptionButton1.Caption = Sheets("щффу ").Cells(3, 2)
OptionButton2.Caption = Sheets("щффу ").Cells(4, 2)
OptionButton3.Caption = Sheets("щффу ").Cells(5, 2)
....
OptionButton18.Caption = Sheets("щффу ").Cells(20, 2)
OptionButton20.Caption = Sheets("щффу ").Cells(21, 2)
OptionButton22.Caption = Sheets("щффу ").Cells(22, 2)
Задав, к примеру, цикл For Next

For i = 1 To 22
x = "OptionButton" & i
With x
.Caption = Sheets("щффу "). Cells(2 + i, 2) 
End With
Next i

Но в таком коде x должен быть объектом, если в начале кода добавить Dim x As Object, то переменную x задать нельзя
Как мне быть?

Автор: Aloha 19.9.2006, 00:10
Izuver

Если OptionButtons "живут" на форме, то так:

Код
For i = 1 To 22
  Controls("OptionButton" & i).Caption = Sheets("щффу ").Cells(2 + i, 2)
Next i

Если OptionButtons "живут" на рабочем листе, то так:

Код
For i = 1 To 22
  ActiveSheet.Shapes("Option Button " & i).Select
  Selection.Characters.Text = Sheets("щффу ").Cells(2 + i, 2)
Next i


Автор: Izuver 19.9.2006, 23:35
Цитата(Aloha @ 19.9.2006,  00:10)
Если OptionButtons "живут" на форме, то так:
Код
For i = 1 To 22
  Controls("OptionButton" & i).Caption = Sheets("щффу ").Cells(2 + i, 2)
Next i

Если OptionButtons "живут" на рабочем листе, то так:
Код
For i = 1 To 22
  ActiveSheet.Shapes("Option Button " & i).Select
  Selection.Characters.Text = Sheets("щффу ").Cells(2 + i, 2)
Next i

Вот здесь:
Private Sub UserForm_Initialize()

Автор: Aloha 20.9.2006, 00:47
Izuver

Код
Private Sub UserForm_Initialize()
  For i = 1 To 22
    Controls("OptionButton" & i).Caption = Sheets("щффу ").Cells(2 + i, 2)
  Next i
End Sub

Автор: Izuver 20.9.2006, 01:08
Цитата(Aloha @ 20.9.2006,  00:47)
Izuver

Код
Private Sub UserForm_Initialize()
  For i = 1 To 22
    Controls("OptionButton" & i).Caption = Sheets("щффу ").Cells(2 + i, 2)
  Next i
End Sub

Да правильно, правильно, просто с первого раза что-то не срослось

Добавлено @ 01:10 
Мне б лучше узнать какой переключатель выжат, если не писать для каждого код?

Автор: Aloha 20.9.2006, 01:21
Izuver

Код

For i = 1 To 22
  If Controls("OptionButton" & i).Value Then
    MsgBox i
  End If
Next i


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)