Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной? / 18 сообщений из 18, страница 1 из 1
10.03.2013, 19:13
    #38179072
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
VBA Excel. На форме 2 listboxa, Например list1 и list2. И 1 кнопка, при нажатии она обращается к модулю в которой оператор for считает от 1 до 2. И если в For переменная равна 1, тогда в list1 добавляется строка со значением x, а, если переменная равна 2, тогда в list2 добавляется строка со значением y. Как это организовать?
...
Рейтинг: 0 / 0
10.03.2013, 19:29
    #38179081
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
Алгоритм полностью описан, непонятно, что именно вызывает затруднение?
...
Рейтинг: 0 / 0
10.03.2013, 20:02
    #38179103
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
Shocker.Pro,


Вот код модуля программы
То, что выделено жирный выдает ошибку
И не знаю как объявить переменную spisokFailovPmPj
Скрин ниже.


For schetPmPj = 1 To 2

If schetPmPj = 1 Then
spisokFailovPmPj = UserForm.List1.List(FailiOST) ' Листбокс в котором идет поиск файлов X

ElseIf schetPmPj = 2 Then
spisokFailovPmPj = UserForm.List2.List(FailiOST) ' Листбокс в котором идет поиск файлов Y
End If



For FailiOST = 0 To spisokPmPj

Open UserForm.txtTextBox.Text & "\" & spisokFailovPmPj For Input As #1

vesFailOST = Input(LOF(1), 1) ' считали весь файл в iText

Dim linesOST() As String ' объявляем массив

linesOST = Split(vesFailOST, vbNewLine) ' в переменную Lines записываем все строки до симвала каретки

Close #1

….

Next FailiOST
...
Рейтинг: 0 / 0
10.03.2013, 20:10
    #38179110
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
Начать тут надо явно с Option Explicit

Далее, из приведенного кода неясно, чему равна переменная FailiOST, видимо Null, из-за чего, собственно, и возникает указанная ошибка

ЗЫ: Как оформлять программный код на форуме, выделять какие-то строки и т.п. можно почитать тут
...
Рейтинг: 0 / 0
10.03.2013, 20:35
    #38179125
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
Shocker.Pro,

Код в кнопке Call mdlModulObrabotki.Modul

Остальной код пишу в модуле. Так просто он почему-то не видит мои листбоксы. Как их можно тут объявить?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
Option Explicit

Sub Modul ()

For schetPmPj = 1 To 2 

If schetPmPj = 1 Then 
    spisokFailovPmPj = ??? ' Листбокс в котором идет поиск файлов X
    spisokPmPj = UserForm.list1.ListCount - 1
ElseIf schetPmPj = 2 Then
    spisokFailovPmPj = ??? ' Листбокс в котором идет поиск файлов Y
    spisokPmPj = UserForm.list2.ListCount - 1
End If



' Если schetPmPj=1 тогда должны считываться файлы из 1 листбокса, потом если schetPmPj=2 файлы считываются из 2 литбокса         

         For FailiOST = 0 To spisokPmPj

                    Open UserForm.txtTextBox.Text & "\" & spisokFailovPmPj For Input As #1
                              
                        vesFailOST = Input(LOF(1), 1) ' считали весь файл в iText
                        
                        Dim linesOST() As String ' объявляем массив
                        
                        linesOST = Split(vesFailOST, vbNewLine) ' в переменную Lines записываем все строки до симвала каретки

                     Close #1

….

Next FailiOST
Next schetPmPj
End Sub
 
...
Рейтинг: 0 / 0
10.03.2013, 20:42
    #38179128
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
1) Если модуль один, то где объявлены все переменные?

2) Не очень понятно, что вообще требуется. Здесь:Bobax012И если в For переменная равна 1, тогда в list1 добавляется строка со значением xнаписано одно, здесь:
Код: vbnet
1.
spisokFailovPmPj = UserForm.List1.List(FailiOST) ' Листбокс в котором идет поиск файлов X

- другое, а какой результат требуется получить - неясно

3) Bobax012Так просто он почему-то не видит мои листбоксыСобственно, с чего вы решили, что он их не видит? Пока ошибка совершенно о другом.
...
Рейтинг: 0 / 0
10.03.2013, 21:51
    #38179181
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
Shocker.Pro,
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
Option Explicit

Sub Modul ()

Dim schetPmPj as Integer
Dim spisokFailovPmPj ‘ Листбоксы, незнаю как их объявить
Dim spisokPmPj as Integer ' Кол-во строк в списке литбокса
Dim FailiOST as Integer
Dim vesFailOST as String

For schetPmPj = 1 To 2 

If schetPmPj = 1 Then 
    spisokFailovPmPj = ??? ' Листбокс в котором идет поиск файлов X
    spisokPmPj = UserForm.list1.ListCount - 1
ElseIf schetPmPj = 2 Then
    spisokFailovPmPj = ??? ' Листбокс в котором идет поиск файлов Y
    spisokPmPj = UserForm.list2.ListCount - 1
End If



' Если schetPmPj=1 тогда должны считываться файлы из 1 листбокса, потом если schetPmPj=2 файлы считываются из 2 литбокса         

         For FailiOST = 0 To spisokPmPj

                    Open UserForm.txtTextBox.Text & "\" & spisokFailovPmPj For Input As #1 ‘ Тут меняется 
                              
                        vesFailOST = Input(LOF(1), 1) ' считали весь файл в iText
                        
                        Dim linesOST() As String ' объявляем массив
                        
                        linesOST = Split(vesFailOST, vbNewLine) ' в переменную Lines записываем все строки до симвала каретки

                     Close #1

….

Next FailiOST
Next schetPmPj
End Sub




Просто скажите, как объявить листбоксы так, чтобы с строке
Open UserForm.txtTextBox.Text & "\" & spisokFailovPmPj For Input As #1 , параметр spisokFailovPmP ссылался на первую, вторую и т.д. строку листбокса 1, затем также ссылался на первую, вторую и т.д. строку листбоска 2.

Он даже ошибки не выдает просто значение spisokFailovPmP - пустое.
Я пробовал объявлять spisokFailovPmPj = userform.list1 и так spisokFailovPmPj = userform.list1.list() ничего не выходит.
Пишет либо ошибку не верный тип, либо не выдает ошибку, но и переменная spisokFailovPmP остается пустой.
...
Рейтинг: 0 / 0
11.03.2013, 00:33
    #38179256
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
Вы что-то непонятное пытаетесь сделать.

Во-первых, оператор Open может открыть только один файл, список ему передавать бесполезно.
Во-вторых, не очень понятно, что вы хотите получить в переменной spisokFailovPmP. Если список элементов листбокса, то это нужно сделать в цикле, а переменную объявить как String, однако, я не вижу в этом надобности, так как этот список все равно бесполезно отдавать оператору Open. Если же вы хотите считать несколько файлов в одну переменную, то Open нужно сделать также несколько раз в цикле.

Однако, советовать вам сложно, так как то, что вы пытаетесь сделать мало соответствует вашему первому посту и заголовку топика, а что такое "идет поиск файлов, идущий в листбоксе" - это пока вообще загадка.

давно не было столь сложного случая реверс-инжиниринга требований заказчика ))
...
Рейтинг: 0 / 0
11.03.2013, 11:05
    #38179485
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
Shocker.Pro,

Ладно, может я плохо объясняю, скажите мне только одно почему в ниженаписанном коде ошибка на строке set spisokFailovPmPj = UserForm.list1

RunTime error '13'
Type mismatch

И как от нее избавиться? Если решу этот вопрос, думаю все получится.


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Option Explicit

Sub Modul ()

Dim schetPmPj as Integer
Dim spisokFailovPmPj as Listbox


For schetPmPj = 1 To 2 
If schetPmPj = 1 Then 
   set spisokFailovPmPj = UserForm.list1 ' Листбокс в котором идет поиск файлов X
   spisokPmPj = UserForm.list1.ListCount - 1
ElseIf schetPmPj = 2 Then
    set spisokFailovPmPj = UserForm.list2 ' Листбокс в котором идет поиск файлов Y
    spisokPmPj = UserForm.list2.ListCount - 1

...
next schetPmPj
End If
...
Рейтинг: 0 / 0
11.03.2013, 11:41
    #38179563
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
Потому что форма у вас называется скорее всего UserForm1, а не UserForm
...
Рейтинг: 0 / 0
11.03.2013, 11:44
    #38179566
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
Shocker.Pro,

Изменил, та же ситуация.:(
...
Рейтинг: 0 / 0
11.03.2013, 11:56
    #38179586
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
что выдастся, если в Immediate window набрать
?TypeName(UserForm1.List1)
...
Рейтинг: 0 / 0
11.03.2013, 12:15
    #38179627
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
Shocker.Pro,

Набрал, запустил проект, ничего другого оне написал, снова выходит сообщение об ошибке.
...
Рейтинг: 0 / 0
11.03.2013, 12:23
    #38179647
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
без приложенного файла дальше помочь не смогу
...
Рейтинг: 0 / 0
11.03.2013, 12:50
    #38179711
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
Shocker.Pro,
...
Рейтинг: 0 / 0
11.03.2013, 13:02
    #38179742
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
Код: vbnet
1.
Dim spisokFailovPmPj as MSForms.Listbox
...
Рейтинг: 0 / 0
11.03.2013, 13:09
    #38179754
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
К слову:
цикл можно упростить до вот такой конструкции (особенно удобно, если списков будет больше двух):
Код: vbnet
1.
2.
3.
4.
For schetPmPj = 1 To 2
   Set spisokFailovPmPj = UserForm1.Controls("List" + CStr(schetPmPj))
   spisokPmPj = spisokFailovPmPj.ListCount - 1
Next schetPmPj
...
Рейтинг: 0 / 0
11.03.2013, 13:42
    #38179799
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
Shocker.Pro,

Слушайте, ОГРОМНОЕ ВАМ СПАСИБО , все заработало.
И еще на счет цикла - я пересмотрю свой код, так как написано у Вас да действительно короче и удобнее!!!
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной? / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]