powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Переполнение массива
3 сообщений из 3, страница 1 из 1
Переполнение массива
    #34943977
nahok43753
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день столкнулся с проблемой и в стопор.
Суть такова: Есть книга с N листами на каждом листе начиная с ячейки А2 начинается столбец с данными,
Необходимо построить результирущий столбец состоящий из всех солбцов всех листов.
Я делаю следующее:

Dim Mass_spisok() As Variant
Dim vars As Variant
For Each vars In Workbooks.Item("all.xls").Sheets
Sheets(vars.Name).Select
xB = "B"
yA = "A"
If FindRange = "" Then FindRange = Cells.Address
N = Range(xB & ":" & yA).Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
'подсчет максимальной строки
Mass_rasm(1, K_Sheets) = vars.Name
Mass_rasm(2, K_Sheets) = N

Max_znach = Mass_rasm(2, K_Sheets)
NameSheets = Mass_rasm(1, K_Sheets)
' Max_znach - мах кол-во данных в столбце
K_Sheets = K_Sheets + 1


Mass_spisok() = Range("A2" & ":" & "B2" & Max_znach).Value
' заполнение Mass_spisok значениями

Sheets(1).Select
cel_adres_razr = Cells(newline, 6).Address
cel_adres_chis = Cells(newline, 7).Address
' получаем адрес первой пустой ячейки в диапозонах 6(F) и 7(G)
newline = newline + N - 1

Range(cel_adres_razr & ":" & cel_adres_chis & Max_znach) = Mass_spisok()
' заполняем диапозон значениями
Next vars
На маленьком объеме работает а
вот при большом кол-ве данных (Max_znach = 2000) вылитает ошибка

Run-time error ~1004~
Method ~Range~ of object~ _Global~ Falied

Как мне исправить это? Подскажите плз.
...
Рейтинг: 0 / 0
Переполнение массива
    #34946632
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала объяви все переменные!! Все целочисленные сделай Long. Неплохо, также, соблюдать типы: vars должна быть типа WorkSheet.
...
Рейтинг: 0 / 0
Переполнение массива
    #34947104
Фотография A.K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.sql.ru/faq/faq_topic.aspx?fid=202] Как мне оформить свое сообщение

nahok43753
Код: plaintext
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.
Dim Mass_spisok() As Variant
Dim vars As Variant
    For Each vars In Workbooks.Item("all.xls").Sheets
       Sheets(vars.Name).Select 
        xB = "B" 
         yA = "A"
  If FindRange = "" Then FindRange = Cells.Address
  N = Range(xB & ":" & yA).Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
  'подсчет максимальной строки 
        Mass_rasm( 1 , K_Sheets) = vars.Name
        Mass_rasm( 2 , K_Sheets) = N
       
             Max_znach = Mass_rasm( 2 , K_Sheets)
            NameSheets = Mass_rasm( 1 , K_Sheets)
             ' Max_znach - мах кол-во данных  в столбце
         K_Sheets = K_Sheets +  1 
 
        
Mass_spisok() = Range("A2" & ":" & "B2" & Max_znach).Value
' заполнение Mass_spisok значениями

Sheets( 1 ).Select
cel_adres_razr = Cells(newline,  6 ).Address
cel_adres_chis = Cells(newline,  7 ).Address
' получаем адрес первой пустой ячейки в диапозонах 6(F) и 7(G)
newline = newline + N -  1 

Range(cel_adres_razr & ":" & cel_adres_chis & Max_znach) = Mass_spisok()
' заполняем диапозон значениями
   Next vars
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Переполнение массива
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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