Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

про Ексель и текстбоксы

3.4K
23 июля 2003 года
T@sh
19 / / 16.07.2003
Люди, может быть кто-нибудь знает, как добраться до текстбокса не называя его напрямую по имени.... Ситуация такая, что нужно сделать цикл по текстбоксам. Например, в зависимости от условия в 1-8 текстбоксе появляются определенные данные.... не прописывать же каждый :((( Если кто-нибудь знает как это сделать, напишите, плиЗ.
267
23 июля 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by T@sh
Люди, может быть кто-нибудь знает, как добраться до текстбокса не называя его напрямую по имени.... Ситуация такая, что нужно сделать цикл по текстбоксам. Например, в зависимости от условия в 1-8 текстбоксе появляются определенные данные.... не прописывать же каждый :((( Если кто-нибудь знает как это сделать, напишите, плиЗ.



 
Код:
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
258
23 июля 2003 года
SergeySV
1.5K / / 19.03.2003
Сделать можно несколькими способами, в том числе все таки используя имена, например:
можно так:
Код:
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="ля-ля"
267
23 июля 2003 года
Cutty Sark
1.2K / / 17.10.2002
Хм... когда я писал свой пример, долго искал у контрола свойство Type. Не нашел, обматерился, извернулся через Instr. А он оказывается только в If и участвует. Спасибо, Сереж.
3.4K
23 июля 2003 года
T@sh
19 / / 16.07.2003
Цитата:
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="ля-ля"


Спасибо ограмадное!!!!!! :)

258
23 июля 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by Cutty Sark
Хм... когда я писал свой пример, долго искал у контрола свойство Type. Не нашел, обматерился, извернулся через Instr. А он оказывается только в If и участвует. Спасибо, Сереж.



Можно еще и так написать:

If TypeName(TextBox1)=TextBox Then
.......
End If

Но считается, что If TypeOf быстрее работает, если необходимо сравнивать...

267
23 июля 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by SergeySV


Можно еще и так написать:

If TypeName(TextBox1)=TextBox Then
.......
End If

Но считается, что If TypeOf быстрее работает, если необходимо сравнивать...



По-моему, ты забыл кавычки справа от "=" ;)

И в хелпе к TypeName нету TextBox

258
23 июля 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by Cutty Sark


По-моему, ты забыл кавычки справа от "=" ;)

И в хелпе к TypeName нету TextBox



Да, забыл :), правильно будет:
If TypeName(TextBox1)="TextBox" Then

3.1K
29 сентября 2003 года
ZABor
17 / / 09.09.2003
А каким бы боком это применить к 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, каждую вот так описывать опупеть можно.
3.4K
29 сентября 2003 года
T@sh
19 / / 16.07.2003
Цитата:
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, каждую вот так описывать опупеть можно.



ну дак наверное можно цикл сделать что-нибудь вроде
for Nomer=1 to 50
после чего вызвать процу которую ты написал.
next Nomer

:)

3.1K
29 сентября 2003 года
ZABor
17 / / 09.09.2003
А без цикла никак?:(
А то у меня там еще много мудрежа, еще циклов тут не хватало.:{
3.1K
29 сентября 2003 года
ZABor
17 / / 09.09.2003
Не, народ, вопрос не по теме. Мне надо просто переменную Nomer as Object, а потом присвоить при нажатии на кнопку Nomer = Commandbutton2 и все.
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.
А я шуму то поднял:)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог