Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Переполнение массива / 3 сообщений из 3, страница 1 из 1
16.11.2007, 10:34:26
    #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
17.11.2007, 11:35:04
    #34946632
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переполнение массива
Для начала объяви все переменные!! Все целочисленные сделай Long. Неплохо, также, соблюдать типы: vars должна быть типа WorkSheet.
...
Рейтинг: 0 / 0
17.11.2007, 23:18:09
    #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
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Переполнение массива / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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