Вообщем я написал код который меняет язык на форме. Вот его алгоритм: 1) присваиваю всем LAbel вручную, имя 2) в екселе создаю лист с полями (RU, ENG, CHI, chose, label_name) 3) в столбце chose с помощью функции выбор, определяю язык. 4) дальше такой код [vba]
[/vba] LN_P2 - это столбец label_name "ActiveCell.Row, ActiveCell.Column - 5" - это столбец chose Все замечательно работает, НО у меня таких LABEL очень много и я вот думаю скорее всего можно это реализовать намного умнее через объекты. Например, найти все LAbel на листе, записать в масив и потом как-то искать и сравнивать масив с label_name в файле. Чтобы при добавлении новых лейблов или прочих данных формы, не прхиодилось лезть и добавлять их в код Вообщем помогите советом и если можно кодом. Это реально сделать или оно того не стоит??
Вообщем я написал код который меняет язык на форме. Вот его алгоритм: 1) присваиваю всем LAbel вручную, имя 2) в екселе создаю лист с полями (RU, ENG, CHI, chose, label_name) 3) в столбце chose с помощью функции выбор, определяю язык. 4) дальше такой код [vba]
[/vba] LN_P2 - это столбец label_name "ActiveCell.Row, ActiveCell.Column - 5" - это столбец chose Все замечательно работает, НО у меня таких LABEL очень много и я вот думаю скорее всего можно это реализовать намного умнее через объекты. Например, найти все LAbel на листе, записать в масив и потом как-то искать и сравнивать масив с label_name в файле. Чтобы при добавлении новых лейблов или прочих данных формы, не прхиодилось лезть и добавлять их в код Вообщем помогите советом и если можно кодом. Это реально сделать или оно того не стоит??leskris
Сообщение отредактировал leskris - Понедельник, 26.01.2015, 12:25
Sub All_TextBoxes() Dim oControl As Control Worksheets(5).Activate For Each oControl In UserForm1.Controls If TypeOf oControl Is MSForms.Label Then
***** If MSForms.Label.Name = Worksheets(5).Cells("A1:AA1000").find(MSForms.Label.Name, LookAt:=xlWhole) Then
oControl.Value = Cells(ActiveCell.Row, ActiveCell.Column - 5) End If End If Next oControl End Sub
[/vba]
Спасибо за сылку, поменял как было в примере, но реально догнать почему такая запись не работает не могу, наверное я написал что-то очень глупое )) Вообщем подскажите почему строчка с *** не правильная??
[vba]
Код
Sub All_TextBoxes() Dim oControl As Control Worksheets(5).Activate For Each oControl In UserForm1.Controls If TypeOf oControl Is MSForms.Label Then
***** If MSForms.Label.Name = Worksheets(5).Cells("A1:AA1000").find(MSForms.Label.Name, LookAt:=xlWhole) Then
oControl.Value = Cells(ActiveCell.Row, ActiveCell.Column - 5) End If End If Next oControl End Sub
[/vba]
Спасибо за сылку, поменял как было в примере, но реально догнать почему такая запись не работает не могу, наверное я написал что-то очень глупое )) Вообщем подскажите почему строчка с *** не правильная??leskris
Сообщение отредактировал leskris - Вторник, 27.01.2015, 03:44
Sub All_TextBoxes() Dim oControl As Control Dim x As string
For Each oControl In UserForm1.Controls If TypeOf oControl Is MSForms.Label Then x = oControl.Name Worksheets(5).Activate
Range("LN_P1").find(x, LookAt:=xlWhole).Select oControl = Cells(ActiveCell.Row, ActiveCell.Column - 5).Value End If Next oControl End Sub
[/vba] Вот этот код начал работать частично, ура, НО, если значение нет в екселе, то опять выдает ошибку на этой строке Range("LN_P1").find(x, LookAt:=xlWhole).Select
[vba]
Код
Sub All_TextBoxes() Dim oControl As Control Dim x As string
For Each oControl In UserForm1.Controls If TypeOf oControl Is MSForms.Label Then x = oControl.Name Worksheets(5).Activate
Range("LN_P1").find(x, LookAt:=xlWhole).Select oControl = Cells(ActiveCell.Row, ActiveCell.Column - 5).Value End If Next oControl End Sub
[/vba] Вот этот код начал работать частично, ура, НО, если значение нет в екселе, то опять выдает ошибку на этой строке Range("LN_P1").find(x, LookAt:=xlWhole).Selectleskris
Сообщение отредактировал leskris - Вторник, 27.01.2015, 09:37
ДА у меня сейчас день (живу в Китае), и это моя не основная работа, можно сказать хобби. Ну я новичек в этом деле, естественно, что многое не знаю и не понимаю...
---- Ну реально не понимаю почему ошибку выдает только на последнем шаге. Запускаю через Ф8 и цикл пашет, но на том моменте когда цикл должен уже закончится выдает ошибку.. “RUN time error 91" Object variable or with block variable non set --- Есть предположение, что я цикл поставил на все ЛЕЙБЛ на форме, но РЕЙНДЖ выбран только на часть???
ДА у меня сейчас день (живу в Китае), и это моя не основная работа, можно сказать хобби. Ну я новичек в этом деле, естественно, что многое не знаю и не понимаю...
---- Ну реально не понимаю почему ошибку выдает только на последнем шаге. Запускаю через Ф8 и цикл пашет, но на том моменте когда цикл должен уже закончится выдает ошибку.. “RUN time error 91" Object variable or with block variable non set --- Есть предположение, что я цикл поставил на все ЛЕЙБЛ на форме, но РЕЙНДЖ выбран только на часть???leskris
Сообщение отредактировал leskris - Вторник, 27.01.2015, 10:21