powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
18 сообщений из 18, страница 1 из 1
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
    #38179072
Bobax012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VBA Excel. На форме 2 listboxa, Например list1 и list2. И 1 кнопка, при нажатии она обращается к модулю в которой оператор for считает от 1 до 2. И если в For переменная равна 1, тогда в list1 добавляется строка со значением x, а, если переменная равна 2, тогда в list2 добавляется строка со значением y. Как это организовать?
...
Рейтинг: 0 / 0
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
    #38179081
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алгоритм полностью описан, непонятно, что именно вызывает затруднение?
...
Рейтинг: 0 / 0
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
    #38179103
Bobax012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
    #38179110
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начать тут надо явно с Option Explicit

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

ЗЫ: Как оформлять программный код на форуме, выделять какие-то строки и т.п. можно почитать тут
...
Рейтинг: 0 / 0
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
    #38179125
Bobax012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
    #38179128
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Если модуль один, то где объявлены все переменные?

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

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

3) Bobax012Так просто он почему-то не видит мои листбоксыСобственно, с чего вы решили, что он их не видит? Пока ошибка совершенно о другом.
...
Рейтинг: 0 / 0
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
    #38179181
Bobax012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
    #38179256
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы что-то непонятное пытаетесь сделать.

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

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

давно не было столь сложного случая реверс-инжиниринга требований заказчика ))
...
Рейтинг: 0 / 0
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
    #38179485
Bobax012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
    #38179563
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что форма у вас называется скорее всего UserForm1, а не UserForm
...
Рейтинг: 0 / 0
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
    #38179566
Bobax012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

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

Набрал, запустил проект, ничего другого оне написал, снова выходит сообщение об ошибке.
...
Рейтинг: 0 / 0
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
    #38179647
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
без приложенного файла дальше помочь не смогу
...
Рейтинг: 0 / 0
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
    #38179711
Bobax012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
...
Рейтинг: 0 / 0
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
    #38179742
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
Dim spisokFailovPmPj as MSForms.Listbox
...
Рейтинг: 0 / 0
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
    #38179754
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К слову:
цикл можно упростить до вот такой конструкции (особенно удобно, если списков будет больше двух):
Код: 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
VBA Excel. 2 listboxа как в них вводить значения в зависимости от переменной?
    #38179799
Bobax012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

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


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