Страницы: 1
RSS
В имя Label включить переменную
 
На форме есть элементы Label1, Label2 и т.д. Хочу в цикле присвоить им подписи Label(переменная).Caption =, никак не могу правильно написать имя с переменной.
Dim j As Integer..... Label&j&.Caption ="test" и еще много вариантов - возникает ошибка. Если пишу Label1 без переменной все работает. Проблема только написать в имя переменную.
 
На всякий случай integer - это целое число...
Если автоматизировать бардак, то получится автоматизированный бардак.
 
да, это целые числа в названиях Label1, Label2 и т.д по которым хочу перебирать, подставляя в название переменную
 
Код
Label1.caption="Test" & j
 
Мне надо заменить в Label1, Label2 и т.д цифры 1, 2, 3, 4 .... на j ( j - переменная)
 
Если они на форме:
Код
Private Sub CommandButton1_Click()
Dim oControl As Control
For Each oControl In Me.Controls
If TypeOf oControl Is MSForms.Label Then oControl.Caption = "TEST" & i
i = i + 1
Next oControl
End Sub
 
VSerg, мне надо для Label в Name вставить переменную и в цикле обращаться к разным Label.  В Caption переменную не надо дописывать.
 
Добавьте проверку имени переместите счетчик наверх
Код
i=i+1
If TypeOf oControl Is MSForms.Label And oControl.Caption = "Label" & i Then oControl.Caption = "TEST"
 
по мотивам VSerg
Код
Private Sub CommandButton1_Click()
Dim oControl As Control
For Each oControl In Me.Controls
If TypeOf oControl Is MSForms.Label Then
if oControl.name = "Label" & i then oControl.caption = "rrrrr"
end if
i = i + 1
Next oControl
End Sub
 
Мне кажется так счетчик не будет успевать за перебором. Стоит переместить его выше, чтобы на момент проверки имени первого контрола, величина i была равна единице.
 
Vitallic, VSerg спасибо буду разбираться и прикручивать это в цикл For...Next.
К Label можно обратиться как к объекту с With.... End With? или как то надо с Control пробовать...

if oControl.name = "Label" & i then oControl.caption = "rrrrr"  - практический готовое решение, только не соображу как это использовать в своем переборе, еще после рабочего дня)))
Изменено: kapso2 - 27.01.2017 18:06:19
 
из выше прочитанного я понял что обратиться к  Label&i&.Caption =..... с любыми знаками пунктуации нельзя,
только через условие (сравнением)   if(for) oControl.name = "Label" & i... надо читать книжки
 
kapso2,  у вас много этих label? Есть вариант внести все элементы label в массив и циклом присваивать им caption.
Код
With Me
    arr = Array(.Label1, .Label2, .Label3, .Label4, .Label5)
    For i = 0 To UBound(arr)
        arr(i).Caption = "test " & i + 1
    Next
End With
Либо перебирать контролы, как вам привели пример выше.
 
Пять! часов простенький вопрос без ответа...
...был бы файл-пример, ответ был бы минут через 15-20...
 
Jungl, с массивом это наверно лучше... Конкретизирую чуть задачу ( наверно не совсем понятно пишу). Есть цикл For... Next и в нем надо обратиться к Lable ( TextBox) и присвоить им значения, для уменьшения кода и универсальности в имени есть цифра и обращаться к объекту  лучше заменяя в имени цифру на переменную.
С массивом  - индекс. спасибо
 
примерно так:
Код
Private Sub CommandButton1_Click()
    Dim i&
    With Me
        For i = 1 To 6
         .Controls("Label" & i).Caption = "Надпись " & i
        Next
    End With
End Sub

Впрочем, в 6# почти такое же решение.
 
Михаил С, не спорю что до этого все правильно, но Ваша подсказка With Me.... то что надо. Получилось ка-то так
Это часть из кода для теста, но масштабы применения большие. Спасибо.
Код
For j = 8 To 30 Step 3
    With Me
   .Controls("lbl_praca" & k).Caption = Cells(4, j)
    End With
  k = k + 1
 Next j

Изменено: kapso2 - 27.01.2017 22:31:01
 
В продолжение темы возник еще вопрос.
Ме.Controls("имя" & k).Caption(Value) ="значение ячейки из таблицы"  (k переменная) работает замечательно.
Но такая структура - Me.Controls("имя" & k).Enable = False(True) выдает ошибку.
Я где-то ошибся или такая конструкция не работает? и как обратится к свойству элемента формы Enable, обращаясь к его имени подставляя переменную. (см.выше).
 
Без подстановки переменной (с константой) работает?
 
Цитата
kapso2 написал:
как обратится к свойству элемента формы Enable
Никак, ибо у формы и контролов нет такого свойства.
А вот к Enabled - именно так, как вы написали.
Изменено: RAN - 28.01.2017 17:02:13
 
Так я о том же. Причем здесь эта тема и константа, если kapso2 не удосужился проверить работу строки?
 
vikttur, для проверки написал строку с константной и Enabled  ( скорей всего добавил из всплывающей подсказки, не сильно рассматривая до буквы).
Обещаю быть внимательней и по пустякам не беспокоить... Хотя учусь и вопросы будут.

Offtop
С пол года находил ответы тут на форуме, а вчера пришлось зарегистрироваться,что бы задать вопрос.
 
Я Вам писал о том, что перед тем, как задать вопрос, нужно самостоятельно осмотреть проблему со всех сторон. Переменная виновата? Посмотеть без нее...
Страницы: 1
Читают тему
Наверх