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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2012, 07:37   #1
Alex-sib
 
Регистрация: 23.02.2012
Сообщений: 4
По умолчанию Перенос данных из форма в другую книгу

Прошу помощи в данном вопросе.
Имеется диапазон ячеек А4:F6 (форма, куда забиваются данные).
Необходим макрос, который при срабатывании переносит данные в лист 1 книгу "База.xlsm", где идет дальнейшая обработка ( в ячейки А4:F6)
Следующее срабатывание долнжо переносить данные в ячейки A7:F9 и т.д.

И второй вопрос: покажите, как заставить макросы срабатывать при определенном значении в ячейке (например А2 при значениях 0,1,2 и т.д.), при проверке всего диапазона столбца А (все заполненые ячейки, если пустых между ними нет).
Alex-sib вне форума Ответить с цитированием
Старый 06.03.2012, 18:10   #2
Alex-sib
 
Регистрация: 23.02.2012
Сообщений: 4
По умолчанию

Нашел то, что вроде бы подходит, но прошу расшифровать код.
1.
Dim R As Range

On Error Resume Next

Set WS1 = ThisWorkbook.Worksheets("в дороге")
Set WS2 = ThisWorkbook.Worksheets("доставлено ")
Set R = WS1.Range(WS1.Cells(1, 17), WS1.Cells(65536, 17))
Ind = Application.Match("прибыл", R, 0)
ReDim Cnt(1) As Long
Cnt(0) = Ind
K = Ind + 1
I = 2
Set R = WS1.Range(WS1.Cells(K, 17), WS1.Cells(65536, 17))
Do Until IsError(Ind)
Ind = Application.Match("прибыл", R, 0)
If Not IsError(Ind) Then
ReDim Preserve Cnt(I)
K = K + Ind - 1
Cnt(I - 1) = K
K = K + 1
Set R = WS1.Range(WS1.Cells(K, 17), WS1.Cells(65536, 17))
I = I + 1
End If
Loop
K = I - 1
For I = 1 To K
WS2.Rows(11).EntireRow.Insert
Next I
K = 0
For I = 1 To UBound(Cnt())
WS1.Rows(Cnt(I - 1) - K).EntireRow.Cut WS2.Rows(I + 10).EntireRow
WS1.Rows(Cnt(I - 1) - K).EntireRow.Delete xlUp
K = K + 1
Next I

Set R = Nothing
Set WS1 = Nothing
Set WS2 = Nothing
End Sub

и еще
2.
Private Sub Main()

Dim i As Long, j As Long, a(): Application.ScreenUpdating = False
a = Sheets("в дороге").UsedRange.Value
For i = 1 To UBound(a, 1)
If a(i, 17) = "прибыл" Then
j = Cells(Rows.Count, 17).End(xlUp).Row + 1
Range(Cells(j, 1), Cells(j, UBound(a, 2))).Value = Application.Index(a, i, 0)
End If: Next

End Sub

Взято отсюда.http://programmersforum.ru/showthrea...9+%F4%E0%E9%EB
Alex-sib вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос/копирование макроса в другую книгу Olper Microsoft Office Excel 7 21.12.2011 17:34
Изменение данных и перенос данных из одной таб в другую Kot9ra Microsoft Office Access 13 02.07.2010 12:22
Перенос данных в другую книгу при нажатии кнопки ElenaKorneva Microsoft Office Excel 7 12.04.2010 12:01
Выбор и перенос данных в другой лист, книгу. Avald Microsoft Office Excel 1 16.06.2008 10:44
Перенос данных в из 1 таб. в другую... ivp88 БД в Delphi 12 11.01.2008 15:45