|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.08.2010, 20:09 | #11 |
Пользователь
Регистрация: 30.11.2009
Сообщений: 13
|
Спасибо, Hugo121! Буду дальше экспериментировать...
Из таблицы "СПИСОК" у меня также формируется накладная для печати по всем записям (кроме первой строки с заголовками колонок). Вначале добавляю в бланк накладной строки, путем копирования строки-образца и вставки, затем в этих добавленных строках заполняю значениями ячейки: Worksheets("ПЕЧАТЬ").Cells(curR, curC).Value = Str Где: curR – текущая строка, curC – текущая колонка, Str – добавляемая строка При этом постоянно повторяется Worksheets("ПЕЧАТЬ") Конструкция такого вида: Код:
В чем тут ошибка? Что я неправильно объявляю или присваиваю? |
22.08.2010, 20:38 | #12 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
set page = Worksheets("ПЕЧАТЬ")
это ведь объект.
webmoney: E265281470651 Z422237915069 R418926282008
|
22.08.2010, 22:49 | #13 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Smaragdov, совет на будущее: старайтесь не использовать в качестве имён переменных названия классов (типа page) и названия встроенных в VBA функций (типа Str)
Не факт, что из-за этого программа работать не будет, но порой могут возникать сложновыявляемые ошибки. Те же имена переменных замените на MyPage и txt - и проблем с кодом точно не будет. PS: Если лист "ПЕЧАТЬ" находится в том же файле, что и код, можно поступить проще (я всегда так делаю) В редакторе VBA измените кодовое имя листа ПЕЧАТЬ (свойство Name в окне свойств) - поставьте туда, например, shPRINT И потом из кода обращайтесь по этому кодовому имени: shPRINT.Cells(curR, curC).Value = txt В этом случае строк типа Dim shPRINT as Worksheet: shPRINT = Worksheets("ПЕЧАТЬ") не потребуется, да и вы в любой момент можете переименовать лист (то, что отображается на ярлычке листа) - на работоспособность кода это не повлият, поскольку кодовое имя листа останется тем же. |
24.08.2010, 15:19 | #14 |
Пользователь
Регистрация: 30.11.2009
Сообщений: 13
|
Еще раз спасибо, Hugo121!
Теперь буду знать, как присваиваются значения объектам на VBA! Начал решать подобные задачи недавно, все еще малопонятно... К сожалению, никак не могу найти хорошего справочника по VBA, а синтаксис тут весьма экзотический (для меня)... :-) Времени на обстоятельное изучения языка нет (полно иных обязанностей), а начальство торопит с результатами... Уважаемый EducatedFool, спасибо за советы! Очень любопытный способ создания псевдонимов имен таблиц – буду использовать! Сейчас пытаюсь разобраться с тем, как помечать строки в Базе (с сохранением выделения при закрытии файла) и копировании оных в СПИСОК текущего дня. Пока что ничего, кроме выделения цветом первой ячейки, и поиска по цвету фона, не могу придумать... В код таблицы "БАЗА" добавил процедуру, меняющую фоновый цвет ячейки с красного на белый, и обратно по двойному клику в первой ячейке выделяемой строки (код частично позаимствован с этого форума): Код:
Код:
Последний раз редактировалось Smaragdov; 24.08.2010 в 15:21. |
21.07.2012, 18:23 | #15 | |
Новичок
Джуниор
Регистрация: 21.07.2012
Сообщений: 2
|
Цитата:
Range("2:" & maxRowSrc) указать на диапазон строчек с i-той по maxrowSrc ? Спасибо заранее ... |
|
22.07.2012, 17:51 | #16 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Код:
|
|
22.07.2012, 19:03 | #17 |
Новичок
Джуниор
Регистрация: 21.07.2012
Сообщений: 2
|
Спасибо !
а ведь очень логично ! еще раз спасибо ! |
01.12.2013, 17:44 | #18 |
Регистрация: 23.09.2011
Сообщений: 8
|
Копирование по имени первой строки
Добрый день,
Прошу, подскажите где ошибка в коде( или как его сделать правильным): Sub Макрос3() Dim WB As Workbook, Wb2 As Workbook Dim Sh1 As Worksheet, Sh2 As Worksheet Dim X As Range Set WB = Workbooks("Таблица1 (1)1.xls") Set Wb2 = Workbooks("Таблица2 (1)1.xls") Set Sh1 = WB.Worksheets(1) Set Sh2 = Wb2.Worksheets(1) Dim lLastRow As Long lLastRow = Sh1.Cells(Sh1.Rows.Count, 1).End(xlUp).Row LastRow = lLastRow - 1 Dim rFndRng As Integer rFndRng = ActiveSheet.UsedRange.Find("ВЗР", , xlFormulas, xlWhole) Sh1.Range("rFndRng:B" & LastRow).Copy Sh2.Range("B2") Set X = Sh2.Columns("B").Find(Application.M ax(Sh2.Columns("B"))) If Not X Is Nothing Then MsgBox " Строка " & X.Row & " Значение " & X.Value End If End Sub Задача: по имени первой ячейки ( ВЗР) плюс одна ячейка начать копировать меняющийся диапазон строк ( может быть от 1-й до 30)- всю строку копировать ( а не только столбец B - потому что приведённый выше код работает только с одном столбцом) и скопировать по последней ячейке относящейся только к диапазону ВЗР ( из прикреплённых файлов видно что придётся использовать lLastRow - 1- потому что Итог не нужен - а первая текстовая ячейка ( зелёная карта) - уже должна относится к другому скопированному диапазону) Спасибо, большое если поможете разобраться |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
копирование таблицы из одной базы в другую | chib_sv | SQL, базы данных | 7 | 20.08.2010 07:46 |
Копирование и вставка формул из одной книги в другую | KNatalia | Microsoft Office Excel | 5 | 10.06.2010 13:15 |
Копирование записей из одной таблицы в другую | rockedit | БД в Delphi | 4 | 10.12.2009 21:39 |
Копирование поля из одной таблицы в другую(ADO) | RamireZ | БД в Delphi | 5 | 17.11.2009 22:48 |
Копирование данных из одной таблицы в другую! | фЁдОр | БД в Delphi | 18 | 06.01.2008 19:27 |