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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2013, 12:07   #1
Anette03
 
Аватар для Anette03
 
Регистрация: 22.04.2013
Сообщений: 5
По умолчанию Проблемы со счетчиком

Добрый день!
Очень нужна помощь в цикле со счетчиком - не пойму, где ошибка.

Есть цикл:

Set r = Range(Cells(4, 40), Cells(Rows, 40)) 'диапазон заполненных ячеек фильтра печати

For Each C In r.Cells

If C <> "" Then

y = Application.WorksheetFunction.Count If(Range(Cells(4, 40), Cells(C.Row, 40)), C)

If y = 1 Then 'если в попадаются несколько одинаковых значениях в списке, печатается только первое
T = C.Row
p = Trim(str(T))

'перенос значений на лист с формой акта
Sheets("Act").Cells(2, 2) = Sheets("Выплаты").Cells(p, 37) 'ФИО
Sheets("Act").Cells(3, 2) = Sheets("Выплаты").Cells(p, 38) 'дата
Sheets("Act").Cells(4, 2) = Sheets("Выплаты").Cells(p, 39) 'Этап

Worksheets("Act").Activate
ActiveSheet.Range("$A$21:$I$1000"). AutoFilter Field:=5, Criteria1:="<>"

'сохранение актов (агентских) в новую папку в PDFActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=iPath & "\" & _
Worksheets("Выплаты").Cells(1, 25) & "; " & Worksheets("Act").Cells(2, 2) & " " & _
"; Этап " & Sheets("Act").Cells(4, 2) & ".pdf"
End If
End If
Next C

Вид таблицы такой:
Снимок.jpg


Ошибка в том, что счетчик проходит первое значение (в 4 строке), y = 1, а дальше, когда встречает значение в строке 7, у = 0: точнее при первом шаге у = 1, а на следующем = 0. Это похоже на "глюк", но может быть, где-то я не так написала?

Помогите, пожалуйста, разобраться.

Большое спасибо!
Anette03 вне форума Ответить с цитированием
Старый 02.12.2013, 12:55   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Я бы так сделал
Код:
    Dim Sh As Worksheet, Col As Collection, X
    Set Sh = Worksheets("Вася Пупкин")
    Set Col = New Collection
    On Error Resume Next
    lLastRowMY = Sh.Cells(Sh.Rows.Count, 40).End(xlUp).Row
    X = Range(Sh.Cells(1, 40), Sh.Cells(lLastRowMY,40))
    For n = 4 To lLastRowMY
If X(n, 1) =""  Then GoTo Continuefor

        Err.Clear
        Col.Add X(n, 1), X(n, 1)
        If Err.Number <> 0 Then GoTo Continuefor

        'перенос значений на лист с формой акта
        Sheets("Act").Cells(2, 2) = Sheets("Выплаты").Cells(n, 37)    'ФИО
        Sheets("Act").Cells(3, 2) = Sheets("Выплаты").Cells(n, 38)    'дата
        Sheets("Act").Cells(4, 2) = Sheets("Выплаты").Cells(n, 39)    'Этап
        'Дальше ваш код

        '====================



        '===================
Continuefor:
    Next
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 02.12.2013, 14:19   #3
Anette03
 
Аватар для Anette03
 
Регистрация: 22.04.2013
Сообщений: 5
По умолчанию

doober, muchas gracias! Все заработало!
Anette03 вне форума Ответить с цитированием
Старый 02.12.2013, 15:32   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Boa sorte amigo
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с простейшим счетчиком patisosha PHP 10 08.11.2013 12:45
Циклы со счетчиком натал Паскаль, Turbo Pascal, PascalABC.NET 1 29.01.2013 00:57
задача,цилк со счетчиком maks22 Помощь студентам 3 03.02.2012 15:00
Проблемы со счетчиком Sergey_Black Общие вопросы C/C++ 3 11.11.2011 02:22
Проблема с счетчиком( vityanya Общие вопросы C/C++ 14 16.12.2010 02:41