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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.09.2012, 08:21   #1
Gusmanrus
 
Регистрация: 12.09.2012
Сообщений: 6
По умолчанию Перенос искомых данных на следующий лист

Доброго времени суток. Пытаюсь написать макрос для определения сколько израсходовал абонент. Максимум чего добился это копирования текста на другой лист в первые две строки. Нужно копировать на лист2 каждую последующую строку с шагом 2 или в каждую пустую. Помогите пожалуйста.Данные команды были найдены,сам шибко не знаю.

Код:
Sub Ìàêðîñ3()
'
' Ìàêðîñ3 Ìàêðîñ
'
Dim strStartAddr As String
Dim rgResult As Range
Dim sh As Worksheet
 
 For Each sh In Worksheets
      
      With sh.Cells
Cells.Find(What:="Ведомость начислений. Телефон ", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False).Activate
 
 
strSelectTop = ActiveCell.Address
strSelectBottom = ActiveCell.Offset(0, 30).Address
Range(strSelectTop & ":" & strSelectBottom).Copy Destination:=Sheets("Лист2").[A1]
    
 strSelectTop = ActiveCell.Address
 Cells.Find(What:="Итог без НДС", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False).Activate


strSelectTop = ActiveCell.Address
strSelectBottom = ActiveCell.Offset(0, 38).Address
Range(strSelectTop & ":" & strSelectBottom).Copy Destination:=Sheets("Лист2").[A2] 




If Not Cells Is Nothing Then
strStartAddr = Cells.Address
End If

End With
Next sh
End Sub



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.
Вложения
Тип файла: rar исходник.rar (17.9 Кб, 17 просмотров)

Последний раз редактировалось Gusmanrus; 12.09.2012 в 09:31.
Gusmanrus вне форума Ответить с цитированием
Старый 12.09.2012, 12:58   #2
Gusmanrus
 
Регистрация: 12.09.2012
Сообщений: 6
Хорошо

Добрые люди помогите как можно скорей. И кстати с праздником вас всех.
Gusmanrus вне форума Ответить с цитированием
Старый 12.09.2012, 13:24   #3
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Можно так, но тоже без переноса...
Да он думаю и не нужен
Из расчёта, что сумма от заголовка расположена всегда на 11 сток ниже, и ничего не пляшет по строке:

Код:
Sub tt()
    Dim a(), i&, ii&
    a = Sheets(1).UsedRange.Value
    ReDim b(1 To UBound(a), 1 To 3)
    For i = 1 To UBound(a)
        If a(i, 23) = "Ведомость начислений. Телефон " Then
            ii = ii + 1
            b(ii, 1) = a(i, 53)
            b(ii, 2) = a(i + 11, 70)
            b(ii, 3) = a(i + 11, 78)
        End If
    Next
    Sheets(2).[a1].Resize(ii, 3) = b
End Sub
Или так, чуть с подстраховкой:

Код:
Sub tt()
    Dim a(), i&, ii&
    a = Sheets(1).UsedRange.Value
    ReDim b(1 To UBound(a), 1 To 3)
    For i = 1 To UBound(a)
        If a(i, 23) = "Ведомость начислений. Телефон " Then
            ii = ii + 1
            b(ii, 1) = a(i, 53)
        End If
        If a(i, 8) = "Итого :" Then
            b(ii, 2) = a(i, 70)
            b(ii, 3) = a(i, 78)
        End If
    Next
    Sheets(2).[a1].Resize(ii, 3) = b
End Sub
P.S. Что за праздник, извините?
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 12.09.2012 в 13:39.
Hugo121 вне форума Ответить с цитированием
Старый 12.09.2012, 14:17   #4
Gusmanrus
 
Регистрация: 12.09.2012
Сообщений: 6
Хорошо

Огонь. Второй вариант подошел
Сегодня день программиста в России.
Gusmanrus вне форума Ответить с цитированием
Старый 12.09.2012, 14:23   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Оба на, а я и не знал...
Вероятно потому, что не программист. И не в России
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 08.01.2013, 10:39   #6
Gusmanrus
 
Регистрация: 12.09.2012
Сообщений: 6
Восклицание

Снова проблема. выскакивает ошибка:
run-time error '9'
subscript out of range
на строчке b(ii, 2) = a(i, 70).
помогите снова исправить,буду признателен.


Код:
Sub tt()
    Dim a(), i&, ii&
    a = Sheets(1).UsedRange.Value
    ReDim b(1 To UBound(a), 1 To 3)
    For i = 1 To UBound(a)
        If a(i, 23) = "Ведомость начислений. Телефон " Then
            ii = ii + 1
            b(ii, 1) = a(i, 53)
        End If
        If a(i, 8) = "Итого :" Then
            b(ii, 2) = a(i, 70)
            b(ii, 3) = a(i, 78)
        End If
    Next
    Sheets(2).[a1].Resize(ii, 3) = b
End Sub

Последний раз редактировалось Gusmanrus; 08.01.2013 в 10:46.
Gusmanrus вне форума Ответить с цитированием
Старый 08.01.2013, 10:55   #7
Gusmanrus
 
Регистрация: 12.09.2012
Сообщений: 6
Восклицание Новый исходник

Новый исходник
Вложения
Тип файла: rar Исходник.rar (66.5 Кб, 14 просмотров)
Gusmanrus вне форума Ответить с цитированием
Старый 09.01.2013, 00:13   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Понятно. Форма поменялась. Никогда не случается это:
Код:
If a(i, 23) = "Ведомость начислений. Телефон " Then
            ii = ii + 1
Поэтому и ошибка на b(ii, 2)...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 09.01.2013, 00:16   #9
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Вот код для нового файла (но не вникал...):
Код:
Sub tt()
    Dim a(), i&, ii&
    a = Sheets(1).UsedRange.Value
    ReDim b(1 To UBound(a), 1 To 3)
    For i = 1 To UBound(a)
        If a(i, 24) = "Ведомость начислений. Телефон " Then
            ii = ii + 1
            b(ii, 1) = a(i, 54)
        End If
        If a(i, 8) = "Итого :" Then
            b(ii, 2) = a(i, 71)
            b(ii, 3) = a(i, 79)
        End If
    Next
    Sheets(2).[a1].Resize(ii, 3) = b
End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 09.01.2013, 06:45   #10
Gusmanrus
 
Регистрация: 12.09.2012
Сообщений: 6
Хорошо

Спасибо тебе огромное.выручил уже дважды
Gusmanrus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос данных на другой лист tgm Microsoft Office Excel 0 06.08.2012 21:43
Перенос данных на другой лист milavski Microsoft Office Excel 12 26.07.2012 15:20
перенос данных на другой лист vorimid Microsoft Office Excel 11 03.06.2012 19:23
Перенос данных на другой лист Palomnik1096 Microsoft Office Excel 5 20.12.2010 15:12
Перенос данных с формы на лист Lyubov1990 Microsoft Office Excel 2 07.04.2009 15:08