Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2011, 13:19   #11
Софико
Подтвердите свой е-майл
 
Регистрация: 30.11.2011
Сообщений: 17
Радость

Спасибо, NERV!
Программа (для которой макрос) установлена только на рабочем компе (на работе) так что в понедельник (не раньше) вечером доложусь.
Софико вне форума Ответить с цитированием
Старый 12.12.2011, 10:19   #12
Софико
Подтвердите свой е-майл
 
Регистрация: 30.11.2011
Сообщений: 17
Радость

NERV, ПРИВЕТ!
Итак, я после слов End Sub (под процедурой моей) поместила всё что ты сказал, и появилась табличка Екселя , прикладываю её PrintScrin см. вложение (она вроде как твоя, - в твоём вложении).

Мне теперь непонятны пока 2 момента:

1) Чтобы воспользоваться выводом который ты прислал, мне ведь надо переобозначать в моём макросе Dim Pn1(1000) Qn1(1000) Pn2(1000) и т.д.?
Правильно я сделаю так: Х(999, 999, 999 и т.д.) ? Правильно понимаю?

2) И, если у меня теперь не 15 одномерных, а 1 двумерный массив, то я вот не соображу что-то, как мне в макросе-то прописать заполнение его первой строчки? Правильно я понимаю, что если я раньше писала:
shag=0
Pn1(shag)=Rastr.Calc(...)
Qn1(shag)=Rastr.Calc(...)
Pn2(shag)=Rastr.Calc(...)
...
shag=shag+1

то теперь вместо этого я должна написать:
shag=0
Х(shag)=Rastr.Calc(...), Rastr.Calc(...), Rastr.Calc(...)
shag=shag+1

то есть, вот в чем вопрос :

Х(shag)=Rastr.Calc(...), Rastr.Calc(...), Rastr.Calc(...) - или ещё все эти элементы строки надо взять в скобки/кавычки? Это грамотно будет?
Вложения
Тип файла: doc лист1.doc (125.5 Кб, 12 просмотров)

Последний раз редактировалось Софико; 12.12.2011 в 22:13. Причина: истина где-то рядом...
Софико вне форума Ответить с цитированием
Старый 13.12.2011, 13:03   #13
Софико
Подтвердите свой е-майл
 
Регистрация: 30.11.2011
Сообщений: 17
Сообщение

NERV, будем считать я предыдущее сообщение не писала )))

В макросе я создала двумерный массив X(999,14), и он , занчит, в процессе работы макроса, заполняется...

А под макросом я всё написала что ты сказал, я про:


With CreateObject("Excel.Application")
.Workbooks.Add(1).Sheets(1).Range(" A1").Resize(1000, 15) = X ' A1 - ячейка с кот. начинается вывод массива
.Visible = True
End With


!!! НО страничка Excel открывается пустой... (но сам макрос сработал, сделал свою работу)


МЫСЛИ:
1) Мне же неизвестен массив, который я в Excel переношу, -после отработки макроса я не вижу заполненного массива, я только знаю что он заполнялся, и всё. И вот этот (заполненный в процессе расчета, но не видимый для меня) массив я должна перенести. Может в этом проблема: я не имею перед переносом в Excel ВИДИМОГО ЗАПОЛНЕННОГО ЦЕЛОГО массива?
(Я надеюсь понятно написала-то? )

2) Может быть некорректо прописана строчка присвоения:

.Workbooks.Add(1).Sheets(1).Range(" A1").Resize(1000, 15) = X

(может как-то: .Workbooks.Add(1).Sheets(1).Range(" A1").Resize(1000, 15).value = X (...) )

3) Может быть в самом макросе я некорректно объявила двумерный массив?
(прикладываю новый вариант моего макроса, взгляни объявление массива и выведение... -на начало и конец ...)

я уже всё, не знаю что тут подумать...
Вложения
Тип файла: txt 2мерный.txt (10.9 Кб, 122 просмотров)

Последний раз редактировалось Софико; 13.12.2011 в 15:02.
Софико вне форума Ответить с цитированием
Старый 13.12.2011, 15:01   #14
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Софико, тот скрипт, кот. я прикреплял, открывал Excel с заполненными ячейками?
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 13.12.2011, 15:06   #15
Софико
Подтвердите свой е-майл
 
Регистрация: 30.11.2011
Сообщений: 17
По умолчанию

тот который прислал - там лист экселя открывается, с теми заполненными ячейками, как у тебя в приложенном листе, да.

ты там сам указывал, что писать в правой части "(1/1)" ... вот, я это и вижу.

(во вчерашнем письме посланном в 9 утра приложила ЛИСТ1.doc - там тоже самое что в твоём приложении;
то есть, кроме указанных ячеек:

x(0, 0) = "[1/1]" ' первый элемент строки
x(0, 14) = "[1/15]" ' последний элемент строки

'------Вторая "строка"------
x(1, 0) = "[2/1]" ' первый элемент строки
x(1, 14) = "[2/15]" ' последний элемент строки
' и т.д.

'------Последняя "строка"------
x(999,0) = "[1000,1]" ' первый элемент строки
x(999,14) = "[1000,15]" ' последний элемент строки

остальные были пустые)

Последний раз редактировалось Софико; 13.12.2011 в 15:33.
Софико вне форума Ответить с цитированием
Старый 13.12.2011, 15:28   #16
Софико
Подтвердите свой е-майл
 
Регистрация: 30.11.2011
Сообщений: 17
Смущение

Я почитала коротко о передаче данных из Визуал Бэйсик в Ексель, но ума у меня не прибавилось, может ты заметишь здесь что-то полезное?

http://support.microsoft.com/kb/247412/ru
Софико вне форума Ответить с цитированием
Старый 13.12.2011, 16:16   #17
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Не понимаю, с чем у Вас сложности. Делайте по нарастающей: от простого к сложному. Рекомендую использовать этот редактор - Notepad++
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 13.12.2011, 16:22   #18
Софико
Подтвердите свой е-майл
 
Регистрация: 30.11.2011
Сообщений: 17
Сообщение

Сложность в том, что если указывать содержимое ячеек (как ты предлагал в примере) - то они печатаются в открываемом листе Excel,
а если я просто после слов End Sub вставляю:

With CreateObject("Excel.Application")
.Workbooks.Add(1).Sheets(1).Range(" A1").Resize(1000, 15) = X
.Visible = True
End With


то лист пустой.

То есть, если указать прямо что вставить - вставляет в Excel, а если не указал - из макроса значения массива X сам не вставляет...

Последний раз редактировалось Софико; 13.12.2011 в 16:25.
Софико вне форума Ответить с цитированием
Старый 14.12.2011, 09:08   #19
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Софико, значит у Вас массив не заполняется. Смотрите в этом направлении. И эту строку пишите правильно
Код:
.Workbooks.Add(1).Sheets(1).Range(" A1").Resize(1000, 15) = X
Откуда у Вас тут пробел перед A1 взялся? Я его не ставил.
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 14.12.2011, 09:12   #20
Софико
Подтвердите свой е-майл
 
Регистрация: 30.11.2011
Сообщений: 17
Смущение

Спасибо, большое спасибо тебе , NERV!
Пробел убрала! Но это не спасло.
Перенос (который ты предложил) - работает чисто.
Но и массив мой в процессе макроса - заполняется, я проверила.

Думаю вот что: просто раз перенос вот этот:

With CreateObject("Excel.Application")
.Workbooks.Add(1).Sheets(1).Range(" A1").Resize(1000, 15) = X
.Visible = True
End With

идёт после слов End Sub, то надо как-то МЕЖДУ НИМИ (между переносом и End Sub) упомянуть снова переносимый массив!!!

Ты же писал непосредственно перед переносом:
Dim x(999,14)
x(0,0)=
x(1,0)=

Ну вот. Значит надо как-то тоже написать - что мы именно переносим. И что шаг у меня есть и он меняется shag=shag+1...
Ибо иначе выходит переносим массив x, НО ОН ЗАКРЫТ СЛОВАМИ End Sub...

Последний раз редактировалось Софико; 14.12.2011 в 13:09.
Софико вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как написать и визуализировать программу в Excel friga Помощь студентам 1 06.04.2011 11:10
Как написать макрос в Excel???? Маська Помощь студентам 1 10.11.2010 16:36
Как написать из excel формулу в word Святой Дьявол Microsoft Office Excel 1 13.09.2010 22:07
как написать формулу Excel ROBERT033 Microsoft Office Excel 3 13.02.2009 23:21
Простой максор. Excel. Как написать. prosims Microsoft Office Excel 7 07.06.2007 17:06