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

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

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2012, 08:41   #11
Rolls
Пользователь
 
Регистрация: 07.05.2010
Сообщений: 45
По умолчанию

чуть чуть подправил скрипт add_pics.
вот что имелось ввиду :
Вложения
Тип файла: rar Книга1.rar (17.1 Кб, 6 просмотров)
Rolls вне форума Ответить с цитированием
Старый 25.04.2012, 09:32   #12
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Про автозаполнение - выполните на чистом листе:
Код:
Sub tt()
    Range("A1").Value = "1"
    Range("A2").Value = "2"
    Range("A1:A2").AutoFill Destination:=Range("A1:A38"), Type:=xlFillDefault
    Range("B1").Formula = "=A1*2"
    Range("B1").AutoFill Destination:=Range("B1:B38")
End Sub
Если нужно, можно затем формулы заменить на значения так же одним движением:
Код:
Range("B1:B38").Value = Range("B1:B38").Value
Дополнительно можно отключить обновление экрана, чтоб процесс шёл быстрее (если нужно заполнять много строк).
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 25.04.2012, 12:41   #13
Rolls
Пользователь
 
Регистрация: 07.05.2010
Сообщений: 45
По умолчанию

Ваш вариант отлично работает!

в моём варианте строчка
Код:
Range("B1").Formula = "=A1*2"
выглядит как
Код:
Range(wB.Sheets("ïðàéñ").Cells(2, 5)).Formula = "=wB.Sheets("ïðàéñ").Cells(2, 4) * 8.26"
но компилятор ругается
Код:
"Expected: end of statement"
почему так?
может быть можно как-то попроще обратиться к нужной мне ячейке в книга2, чем
Код:
wB.Sheets("ïðàéñ").Cells(2, 4)
подозреваю, что всё что в кавычках воспринимается буквально, и громоздкая формула по добиранию до нужной ячейки компилятору ничео не говорит.

Последний раз редактировалось Rolls; 25.04.2012 в 12:46.
Rolls вне форума Ответить с цитированием
Старый 25.04.2012, 13:48   #14
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Нет времени сейчас Ваш файл править, но по поводу формулы - её нужно давать в другом виде.
Сравните:
Код:
.Formula = "=A1*2"
и
Код:
.Formula = "=wB.Sheets("ïðàéñ").Cells(2, 4) * 8.26"
Вот это
Код:
=wB.Sheets("ïðàéñ").Cells(2, 4)
нужно преобразовать в понятный вид.
Скорее всего в
Код:
.Formula = "=D2 * 8.26"
или
Код:
.Formula = "=D" & переменная & " * 8.26"
Или можно использовать
Код:
wB.Sheets("ïðàéñ").Cells(2, 4).Address(0, 0) & " * 8.26"
Пробелы в кавычках можно убрать, хотя и так работает.
Когда будете указывать диапазон для автозаполнения - там можно уже более вольно подходить.

И кстати - чтоб не было Sheets("ïðàéñ"), копируйте код при русской раскладке.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 25.04.2012 в 13:51.
Hugo121 вне форума Ответить с цитированием
Старый 25.04.2012, 14:51   #15
Rolls
Пользователь
 
Регистрация: 07.05.2010
Сообщений: 45
По умолчанию

Всё понятно, спасибо!
Rolls вне форума Ответить с цитированием
Старый 25.04.2012, 16:38   #16
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Код:
Range(wB.Sheets("ïðàéñ").Cells(2, 5)).Formula = "=wB.Sheets("ïðàéñ").Cells(2, 4) * 8.26"
чтобы не выскакивали здесь ошибки, напишите так:
Код:
Range(wB.Sheets("ïðàéñ").Cells(2, 5)).Formula = "=wB.Sheets(""ïðàéñ"").Cells(2, 4) * 8.26"
интерпретатор воспринимает кавычки в имени файла как конец строки.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 25.04.2012, 17:14   #17
Rolls
Пользователь
 
Регистрация: 07.05.2010
Сообщений: 45
По умолчанию

DiemonStar

Код:
"Method 'Range' of object'_Global' failed

Последний раз редактировалось Rolls; 25.04.2012 в 17:17.
Rolls вне форума Ответить с цитированием
Старый 25.04.2012, 17:45   #18
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Да, кавычки нужно удваивать. Но тут дело не в этом - для формулы должна быть сформирована готовая правильная строка.

Например, в s$ нормальная строка, а формула не принимается:

Код:
Sub tt()
Dim s$
s = "=Sheets(""Sheet2"").Cells(2, 4) * 8.26"
Range("a1").Formula = s
End Sub
А
Код:
Range("a1").Formula = "=A10"
вполне работает.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 26.04.2012, 08:38   #19
Rolls
Пользователь
 
Регистрация: 07.05.2010
Сообщений: 45
По умолчанию

как ни странно та же ошибка.
скажите, кто знает, как из этого wB.Sheets(""ïðàéñ"").Cells(2, 4) сделать просто Cells(2, 4), другими словаи сделать КНИГА2 активной что ли. вот тогда, думаю, можно было бы просто писать А1, В1 и тд.
Rolls вне форума Ответить с цитированием
Старый 26.04.2012, 09:20   #20
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Rolls, думайте проще
Вы должны всего лишь записать в ячейку Вашей wB.Sheets("ïðàéñ").Cells(2, 5)) формулу "=D2 * 8.26" и всё!
Другое дело, если вместо D2 может динамически быть другой адрес - тогда этот адрес нужно преобразовать в вид "D2" или "D3" ил "E12" или что там должно быть.
И это нужно сделать до того, как будете писать формулу, т.е. строка должна быть уже готова.
Всё.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись данных в закрытую/скрытую из UserForm другой открытой книги книги. Dark Victor Microsoft Office Excel 1 12.03.2012 18:37
Автоматическое создание новой книги с экспортом данных из предыдущей книги S_Brodsky Microsoft Office Excel 5 17.02.2012 12:17
Макрос активной книги открывает книги xlsm содержащих auto_open Daren Microsoft Office Excel 0 28.01.2011 09:34
Скопировать данные из некоторых ячеек одной книги в другие книги fcunited Microsoft Office Excel 8 09.06.2010 12:14