Private Sub CommandButton1_Click()
Dim t As Control
For Each t In UserForm1.Controls
If InStr(1, t.Name, "TextBox") > 0 Then t.Value = Time
Next t
End Sub
про Ексель и текстбоксы
Люди, может быть кто-нибудь знает, как добраться до текстбокса не называя его напрямую по имени.... Ситуация такая, что нужно сделать цикл по текстбоксам. Например, в зависимости от условия в 1-8 текстбоксе появляются определенные данные.... не прописывать же каждый :((( Если кто-нибудь знает как это сделать, напишите, плиЗ.
Цитата:
Originally posted by T@sh
Люди, может быть кто-нибудь знает, как добраться до текстбокса не называя его напрямую по имени.... Ситуация такая, что нужно сделать цикл по текстбоксам. Например, в зависимости от условия в 1-8 текстбоксе появляются определенные данные.... не прописывать же каждый :((( Если кто-нибудь знает как это сделать, напишите, плиЗ.
Люди, может быть кто-нибудь знает, как добраться до текстбокса не называя его напрямую по имени.... Ситуация такая, что нужно сделать цикл по текстбоксам. Например, в зависимости от условия в 1-8 текстбоксе появляются определенные данные.... не прописывать же каждый :((( Если кто-нибудь знает как это сделать, напишите, плиЗ.
Код:
можно так:
Код:
For i=1 To 10
' название TextBox'ов: TextBox1, TextBox2 и т.д.
Form1.Controls("TextBox" & i).Value="ля-ля"
Next i
или так:
Dim ctl As Control
For Each ctl In Me.Controls
If TypeOf ctl Is Textbox Then
' .......... делаешь что нужно
End If
Next
А можно еще и массив указателей на контролы создать:
Dim t(2) As Variant
Set t(0) = TextBox1
Set t(1) = TextBox2
Set t(2) = TextBox3
t(0).Value="ля-ля"
' название TextBox'ов: TextBox1, TextBox2 и т.д.
Form1.Controls("TextBox" & i).Value="ля-ля"
Next i
или так:
Dim ctl As Control
For Each ctl In Me.Controls
If TypeOf ctl Is Textbox Then
' .......... делаешь что нужно
End If
Next
А можно еще и массив указателей на контролы создать:
Dim t(2) As Variant
Set t(0) = TextBox1
Set t(1) = TextBox2
Set t(2) = TextBox3
t(0).Value="ля-ля"
Хм... когда я писал свой пример, долго искал у контрола свойство Type. Не нашел, обматерился, извернулся через Instr. А он оказывается только в If и участвует. Спасибо, Сереж.
Цитата:
Originally posted by SergeySV
Сделать можно несколькими способами, в том числе все таки используя имена, например:
можно так:
Сделать можно несколькими способами, в том числе все таки используя имена, например:
можно так:
Код:
For i=1 To 10
' название TextBox'ов: TextBox1, TextBox2 и т.д.
Form1.Controls("TextBox" & i).Value="ля-ля"
Next i
или так:
Dim ctl As Control
For Each ctl In Me.Controls
If TypeOf ctl Is Textbox Then
' .......... делаешь что нужно
End If
Next
А можно еще и массив указателей на контролы создать:
Dim t(2) As Variant
Set t(0) = TextBox1
Set t(1) = TextBox2
Set t(2) = TextBox3
t(0).Value="ля-ля"
' название TextBox'ов: TextBox1, TextBox2 и т.д.
Form1.Controls("TextBox" & i).Value="ля-ля"
Next i
или так:
Dim ctl As Control
For Each ctl In Me.Controls
If TypeOf ctl Is Textbox Then
' .......... делаешь что нужно
End If
Next
А можно еще и массив указателей на контролы создать:
Dim t(2) As Variant
Set t(0) = TextBox1
Set t(1) = TextBox2
Set t(2) = TextBox3
t(0).Value="ля-ля"
Спасибо ограмадное!!!!!! :)
Цитата:
Originally posted by Cutty Sark
Хм... когда я писал свой пример, долго искал у контрола свойство Type. Не нашел, обматерился, извернулся через Instr. А он оказывается только в If и участвует. Спасибо, Сереж.
Хм... когда я писал свой пример, долго искал у контрола свойство Type. Не нашел, обматерился, извернулся через Instr. А он оказывается только в If и участвует. Спасибо, Сереж.
Можно еще и так написать:
If TypeName(TextBox1)=TextBox Then
.......
End If
Но считается, что If TypeOf быстрее работает, если необходимо сравнивать...
Цитата:
Originally posted by SergeySV
Можно еще и так написать:
If TypeName(TextBox1)=TextBox Then
.......
End If
Но считается, что If TypeOf быстрее работает, если необходимо сравнивать...
Можно еще и так написать:
If TypeName(TextBox1)=TextBox Then
.......
End If
Но считается, что If TypeOf быстрее работает, если необходимо сравнивать...
По-моему, ты забыл кавычки справа от "=" ;)
И в хелпе к TypeName нету TextBox
Цитата:
Originally posted by Cutty Sark
По-моему, ты забыл кавычки справа от "=" ;)
И в хелпе к TypeName нету TextBox
По-моему, ты забыл кавычки справа от "=" ;)
И в хелпе к TypeName нету TextBox
Да, забыл :), правильно будет:
If TypeName(TextBox1)="TextBox" Then
Т.е.
code:
If Worksheets("Лист1").CommandButton(Nomer).Caption = "Скрыть" Then
Worksheets("Лист1").Rows(ForNew & ":" & ForEnd).Hidden = True
Worksheets("Лист1").CommandButton(Nomer).Caption = "Отобразить"
Else
Worksheets("Лист1").Rows(ForNew & ":" & ForEnd).Hidden = False
Worksheets("Лист1").CommandButton(Nomer).Caption = "Скрыть"
End If
CommandButton(Nomer) - это надо на что-то заменить.
В commandbutton_click задаются переменные и вызывается эта процедура. Просто таблица большая и кнопок будет около 50, каждую вот так описывать опупеть можно.
Цитата:
Originally posted by ZABor
А каким бы боком это применить к commandbutton'у???
Т.е.
code:
If Worksheets("Лист1").CommandButton(Nomer).Caption = "Скрыть" Then
Worksheets("Лист1").Rows(ForNew & ":" & ForEnd).Hidden = True
Worksheets("Лист1").CommandButton(Nomer).Caption = "Отобразить"
Else
Worksheets("Лист1").Rows(ForNew & ":" & ForEnd).Hidden = False
Worksheets("Лист1").CommandButton(Nomer).Caption = "Скрыть"
End If
CommandButton(Nomer) - это надо на что-то заменить.
В commandbutton_click задаются переменные и вызывается эта процедура. Просто таблица большая и кнопок будет около 50, каждую вот так описывать опупеть можно.
А каким бы боком это применить к commandbutton'у???
Т.е.
code:
If Worksheets("Лист1").CommandButton(Nomer).Caption = "Скрыть" Then
Worksheets("Лист1").Rows(ForNew & ":" & ForEnd).Hidden = True
Worksheets("Лист1").CommandButton(Nomer).Caption = "Отобразить"
Else
Worksheets("Лист1").Rows(ForNew & ":" & ForEnd).Hidden = False
Worksheets("Лист1").CommandButton(Nomer).Caption = "Скрыть"
End If
CommandButton(Nomer) - это надо на что-то заменить.
В commandbutton_click задаются переменные и вызывается эта процедура. Просто таблица большая и кнопок будет около 50, каждую вот так описывать опупеть можно.
ну дак наверное можно цикл сделать что-нибудь вроде
for Nomer=1 to 50
после чего вызвать процу которую ты написал.
next Nomer
:)
А то у меня там еще много мудрежа, еще циклов тут не хватало.:{
Private Sub CommandButton2_Click()
Set Nomer = CommandButton2
ForNew = 6
ForEnd = 57
OpenClosed
End Sub
и так 52 раза
Public Sub OpenClosed()
Application.ScreenUpdating = False
If Worksheets("Лист1").Nomer.Caption = "Скрыть" Then
Worksheets("Лист1").Rows(ForNew & ":" & ForEnd).Hidden = True
Worksheets("Лист1").Nomer.Caption = "Отобразить"
Else
Worksheets("Лист1").Rows(ForNew & ":" & ForEnd).Hidden = False
Worksheets("Лист1").Nomer.Caption = "Скрыть"
End If
For Cikl = ForNew To ForEnd
If Worksheets("Лист1").Cells(Cikl, 1).Value = "Пусто" And Worksheets("Лист1").Cells(Cikl, 10).Value = "Пусто" Then
Worksheets("Лист1").Rows(Cikl).Hidden = True
End If
Next Cikl
Application.ScreenUpdating = True
End Sub
Вдруг кому понадобится. А цикл тут и не к месту.
Группа и структура тут тоже не подходят из-за Cikl.
А я шуму то поднял:)