Загромаждение Листинга
:roll: :
If FrmSecond.Text1.Text = 1 Then
If FrmSecond.Text2.Text = 10 Then
Text1.Visible = True
Text2.Visible = True
Text3.Visible = True
Text4.Visible = True
Text5.Visible = True
Text6.Visible = True
Text7.Visible = True
Text8.Visible = True
Text9.Visible = True
Text10.Visible = True
TxSir1.Visible = True
TxProd1.Visible = True
TxProd2.Visible = True
TxProd3.Visible = True
TxProd4.Visible = True
TxProd5.Visible = True
TxProd6.Visible = True
TxProd7.Visible = True
TxProd8.Visible = True
TxProd9.Visible = True
TxProd10.Visible = True
End If
End If
P( Возможно ли задать выполнение следуйщих действий одной командой посредствам присвоения им определенной метки дабы исключить Загромаждение листинга кодами постоянно повторяющихся дйствий?
:roll: :
If FrmSecond.Text1.Text = 1 Then
If FrmSecond.Text2.Text = 10 Then
Text1.Visible = True
Text2.Visible = True
Text3.Visible = True
Text4.Visible = True
Text5.Visible = True
.........................
End If
End If
Да.
Для этого все перечисленные текстовые поля на стадии проектирования формы должны быть занесены в массив элементов в котором они будут различаться индексами.
После этого вы сможете обращаться к каждому текстовому полю/группе полей по его/их уникальному индексу; групповые действия с полями можно осуществлять в цикле.
Формирование массива элеменотов:
1. создайте на форме 1-е текстовое поле; назовите его, скажем, VseTxtPolja
2. скопируйте указанное текстовое поле в буфер обмена
3. вставте скопированное поле в текущую форму; при этом IDE VB запросит у вас разрешение создать массив элементов управления (в данном случае - текстовых полей)
4. ответьте утвердительно на заданный вопрос, кликнув OK в соответствующем диалоговом окне
5. подобным образом внесите в форму необходимое количество текстовых полей
6. теперь у вас сфорирован массив текстовых полей с именем VseTxtPolja индекса которых изменяются от нуля до n-1, де n - число текстовых полей в массиве управления
7. теперь в соответств. процедуре вы можете обратиться к этим полям через их индекса, например таким образом:
For i = 0 To n-1
VseTxtPolja(i).Enabled = True
Next
(т.е. все текстовые поля массива VseTxtPolja с индексами от нуля до n-1 станут доступными)
Однако у меня возник ворос: можно ли произвести дополнительные сокращения если используется несколько интервалов.....?
If FrmSecond.Text2.Text = 1 Then
For i = 1 To 9
Text1(i).Visible = False
Next
For i = 11 To 19
Text1(i).Visible = False
Next
For i = 21 To 29
Text1(i).Visible = False
Next
For i = 31 To 39
Text1(i).Visible = False
Next
For i = 41 To 49
Text1(i).Visible = False
Next
For i = 51 To 59
Text1(i).Visible = False
Next
For i = 61 To 69
Text1(i).Visible = False
Next
For i = 71 To 79
Text1(i).Visible = False
Next
For i = 81 To 89
Text1(i).Visible = False
Next
For i = 91 To 99
Text1(i).Visible = False
Next
Нужен неполный интервал от 0 до 100 (исключая индексы i = 0,10,20,30,40,50,60,70,80,90,при которым Text1(i).Visible = True) ....P( )
Пришлось разбить на 10 интервальчиков)....,что тоже грамоздить листинг (((( подсобите чем Могите
P(
Вопросы все НАЗРЕВАЮТ и НАЗРЕВАЮТ ......
;)Где Вы, любители садово-огородных участков????
;)Где Вы, агрономы-косметологи ????
;)Где Вы, садовники и садовничихи ????
;)Где Вы, програмисты и программерки????
пока все ето художество надумывал чуть вопрос не забыл :( P(
Вопрос:
Как соответствующему элементу text1(i) указать соответствующую ячейку в книге Excel ??? P(
:roll:
;) Огромное спосибо за несоразмерную помощь (ох, теперь одни размеры в голове :)
Однако у меня возник ворос: можно ли произвести дополнительные сокращения если используется несколько интервалов.....?
.........................
Нужен неполный интервал от 0 до 100 (исключая индексы i = 0,10,20,30,40,50,60,70,80,90,при которым Text1(i).Visible = True) ....P( )
Пришлось разбить на 10 интервальчиков)....,что тоже грамоздить листинг (((( подсобите чем Могите
P(
сделай if
If i mod 10 <> 0 then
Text1(i).Visible = False
End If
Next
Dim iXLApp As Object, iXLWb As Object
iFullName$ = "C:\Excel\1.xls"
If Text1(0).Text <> "" Then
If Dir(iFullName$) <> "" Then
Set iXLApp = CreateObject("Excel.Application")
Set iXLWb = iXLApp.Workbooks.Open(FileName:=iFullName$)
iXLWb.Worksheets("Лист1").Range("B1").Value = Text1(0).Text
iXLWb.Close saveChanges:=True
iXLApp.Quit
Set iXLWb = Nothing
Set iXLApp = Nothing
End If
Text1(0).Text = ""
End If
как сделать что бы For i=0 To 99
Tetxt1(i) равнялся A1,A2,A3,A4.....?
или A1,B2,C2,D2 (Здесь наверное другая реализаци т.к. в латинице буковок не хватает пойдут AA1 и т.п.) P( P( P( :roll: :roll:
Text(iCount%).Text = _
iXLWb.Worksheets("Лист1"). _
Range("A1").Offset(iCount%).Value
Next
;) Слава Пашульке, Сдава !!! ;)