Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Object variable or With block variable not set - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Object variable or With block variable not set (Макросы/Sub)
Object variable or With block variable not set
vasilek7777 Дата: Вторник, 14.08.2018, 22:18 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Добрый вечер!
Написала класс, заполнила массив данными, и жду вывода данных из массива на другом листе.
С одним файлом отработало, а с другим не хочет

[vba]
Код

Sub orderNumber()

Dim i As Integer
Dim j As Integer
Dim inData As Worksheet
Dim outData As Worksheet
Dim countRowAct As Integer
Dim countRowBase As Integer
Dim class_facility As Class2
Dim arr As Collection
    Set arr = New Collection
Dim myCollection As Collection

    Windows("20180801ksuit.xlsm").Activate
    Set inData = Workbooks("20180801ksuit.xlsm").Worksheets("export")
    ' countRowAct1 = Worksshets("export").Cells(Rows.Count, 1).End(xlUp).Row
     
    countRowAct = 4600

    Set outData = Workbooks("20180801ksuit.xlsm").Worksheets("extract")

    For i = 2 To countRowAct + 1

        Set class_facility = New Class2

        class_facility.NumberMI = inData.Cells(i, 1).Value
        class_facility.TimeOpen = inData.Cells(i, 3).Value
        class_facility.TimeStartMI = inData.Cells(i, 3).Value
        class_facility.Company = inData.Cells(i, 5).Value
        class_facility.CompanyInitiator = inData.Cells(i, 7).Value
        class_facility.Description = inData.Cells(i, 8).Value
        class_facility.StatusOK = inData.Cells(i, 11).Value
        class_facility.Provider = inData.Cells(i, 13).Value
        class_facility.Cause = inData.Cells(i, 14).Value

            arr.Add class_facility

    Next i

' Set myCollection = sortArray(arr)
    Dim tempClass1 As Class2
    Set tempClass1 = myCollection.Item(1)

    Dim FirstElement As New Class2
    Dim element As New Class2

    Set FirstClass = myCollection.Item(1)

    Dim numberRow As Integer
    numberRow = 1

    For j = 1 To countRowAct
       Set element = myCollection.Item(j)

         Set FirstClass = element
'
            outData.Cells(numberRow, 1) = myCollection.Item(j).NumberMI
            outData.Cells(numberRow, 2) = myCollection.Item(j).TimeOpen
            outData.Cells(numberRow, 3) = myCollection.Item(j).TimeStartMI
            outData.Cells(numberRow, 4) = myCollection.Item(j).Company
            outData.Cells(numberRow, 5) = myCollection.Item(j).CompanyInitiator
            outData.Cells(numberRow, 6) = myCollection.Item(j).Description
            outData.Cells(numberRow, 7) = myCollection.Item(j).StatusOK
            outData.Cells(numberRow, 8) = myCollection.Item(j).Provider
            outData.Cells(numberRow, 9) = myCollection.Item(j).Cause

            numberRow = numberRow + 1
  
    Next j

End Sub
[/vba]


Сообщение отредактировал vasilek7777 - Вторник, 14.08.2018, 23:21
 
Ответить
СообщениеДобрый вечер!
Написала класс, заполнила массив данными, и жду вывода данных из массива на другом листе.
С одним файлом отработало, а с другим не хочет

[vba]
Код

Sub orderNumber()

Dim i As Integer
Dim j As Integer
Dim inData As Worksheet
Dim outData As Worksheet
Dim countRowAct As Integer
Dim countRowBase As Integer
Dim class_facility As Class2
Dim arr As Collection
    Set arr = New Collection
Dim myCollection As Collection

    Windows("20180801ksuit.xlsm").Activate
    Set inData = Workbooks("20180801ksuit.xlsm").Worksheets("export")
    ' countRowAct1 = Worksshets("export").Cells(Rows.Count, 1).End(xlUp).Row
     
    countRowAct = 4600

    Set outData = Workbooks("20180801ksuit.xlsm").Worksheets("extract")

    For i = 2 To countRowAct + 1

        Set class_facility = New Class2

        class_facility.NumberMI = inData.Cells(i, 1).Value
        class_facility.TimeOpen = inData.Cells(i, 3).Value
        class_facility.TimeStartMI = inData.Cells(i, 3).Value
        class_facility.Company = inData.Cells(i, 5).Value
        class_facility.CompanyInitiator = inData.Cells(i, 7).Value
        class_facility.Description = inData.Cells(i, 8).Value
        class_facility.StatusOK = inData.Cells(i, 11).Value
        class_facility.Provider = inData.Cells(i, 13).Value
        class_facility.Cause = inData.Cells(i, 14).Value

            arr.Add class_facility

    Next i

' Set myCollection = sortArray(arr)
    Dim tempClass1 As Class2
    Set tempClass1 = myCollection.Item(1)

    Dim FirstElement As New Class2
    Dim element As New Class2

    Set FirstClass = myCollection.Item(1)

    Dim numberRow As Integer
    numberRow = 1

    For j = 1 To countRowAct
       Set element = myCollection.Item(j)

         Set FirstClass = element
'
            outData.Cells(numberRow, 1) = myCollection.Item(j).NumberMI
            outData.Cells(numberRow, 2) = myCollection.Item(j).TimeOpen
            outData.Cells(numberRow, 3) = myCollection.Item(j).TimeStartMI
            outData.Cells(numberRow, 4) = myCollection.Item(j).Company
            outData.Cells(numberRow, 5) = myCollection.Item(j).CompanyInitiator
            outData.Cells(numberRow, 6) = myCollection.Item(j).Description
            outData.Cells(numberRow, 7) = myCollection.Item(j).StatusOK
            outData.Cells(numberRow, 8) = myCollection.Item(j).Provider
            outData.Cells(numberRow, 9) = myCollection.Item(j).Cause

            numberRow = numberRow + 1
  
    Next j

End Sub
[/vba]

Автор - vasilek7777
Дата добавления - 14.08.2018 в 22:18
Roman777 Дата: Среда, 15.08.2018, 07:44 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
[vba]
Код
Set inData = Workbooks("20180801ksuit.xlsm").Worksheets("export")
Set outData = Workbooks("20180801ksuit.xlsm").Worksheets("extract")
[/vba]
возможно, не открыта 20180801ksuit.xlsm. Или в ней нет листа export или extract. В какой строчке ошибка то?


Много чего не знаю!!!!
 
Ответить
Сообщение[vba]
Код
Set inData = Workbooks("20180801ksuit.xlsm").Worksheets("export")
Set outData = Workbooks("20180801ksuit.xlsm").Worksheets("extract")
[/vba]
возможно, не открыта 20180801ksuit.xlsm. Или в ней нет листа export или extract. В какой строчке ошибка то?

Автор - Roman777
Дата добавления - 15.08.2018 в 07:44
vasilek7777 Дата: Среда, 15.08.2018, 08:24 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Вот в этой строчке падает:
[vba]
Код
Set FirstClass = myCollection.Item(1)
[/vba]
Книга открыта да и листы есть.
 
Ответить
СообщениеВот в этой строчке падает:
[vba]
Код
Set FirstClass = myCollection.Item(1)
[/vba]
Книга открыта да и листы есть.

Автор - vasilek7777
Дата добавления - 15.08.2018 в 08:24
Pelena Дата: Среда, 15.08.2018, 08:31 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19161
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
А что за переменная FirstClass, нигде не вижу объявления


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеА что за переменная FirstClass, нигде не вижу объявления

Автор - Pelena
Дата добавления - 15.08.2018 в 08:31
vasilek7777 Дата: Четверг, 16.08.2018, 08:18 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Спасибо!
Проблема была в том, что переменная обращалась к первому элементу коллекции до ее заполнения данными.
 
Ответить
СообщениеСпасибо!
Проблема была в том, что переменная обращалась к первому элементу коллекции до ее заполнения данными.

Автор - vasilek7777
Дата добавления - 16.08.2018 в 08:18
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Object variable or With block variable not set (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!