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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2011, 11:35   #11
hoza
Новичок
Джуниор
 
Регистрация: 13.04.2011
Сообщений: 6
По умолчанию

Спасибо. Заработало.
Но заработало немного неправильно. Почему то в основном коде, где строчка
Код:
If record.podr = "áðèãàäà 1" Then smena1.Add record
значение record.podr пустое и, соответственно, ничего в коллекцию не добавляется. Причём если в отладчике смотреть на значение, которое передаётся - там всё есть. Или может метод написать, который бы возвращал значение?

Последний раз редактировалось hoza; 13.04.2011 в 11:52.
hoza вне форума Ответить с цитированием
Старый 13.04.2011, 12:16   #12
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
значение record.podr пустое и, соответственно, ничего в коллекцию не добавляется
А зачем вы лишних точек понаставили?
Код:
Sub ReadFromRow(ByRef ro As Range)
    On Error Resume Next
    With ro
        .data = .Cells(1)
        .nom = .Cells(2)
        .podr = .Cells(3)
Уберите On Error Resume Next - и сразу ошибка вылезет.

Правильно будет так:

Код:
Sub ReadFromRow(ByRef ro As Range)
    On Error Resume Next
    With ro
        data = .Cells(1)
        nom = .Cells(2)
        podr = .Cells(3)
EducatedFool вне форума Ответить с цитированием
Старый 02.03.2018, 20:51   #13
Vagmat
 
Регистрация: 02.03.2018
Сообщений: 6
По умолчанию

Программа ругается на тип. Не могу понять в чем дело.
Или же ситуация такая же как в этой теме?

Есть пользовательский тип.
Public Type XYZ
X As Integer
Y As Single
Z As Single
End Type

Объявляю массив и передаю его в процедуру.
Dim ArrayData(1 To 365) As XYZ
FullingArray (ArrayData)

Вот на этой строчке ругается.
Sub FullingArray(ByRef ArrayDataFull() As XYZ)
....
End Sub

Подскажите как исправить ошибку.
Vagmat вне форума Ответить с цитированием
Старый 02.03.2018, 21:20   #14
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Vagmat, синтаксис оператора Call
Код:
FullingArray ArrayData
'либо
Call FullingArray(ArrayData)
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 03.03.2018, 16:21   #15
Vagmat
 
Регистрация: 02.03.2018
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
Vagmat, синтаксис оператора Call
Код:
FullingArray ArrayData
'либо
Call FullingArray(ArrayData)
Благодарю за подсказку, появляется следующая ошибка:
User-defined type not defined

Если объявляю тип в модуле, то ошибка следующая:
Statement invalid outside Type block

В модуле только Public Type.... End Type.
Vagmat вне форума Ответить с цитированием
Старый 03.03.2018, 16:54   #16
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

В отдельном модуле работает
Код:
Option Explicit
Public Type XYZ
    x As Integer
    y As Single
    z As Single
End Type

Sub RUN_MY_LITTLE_UGLY_BASTARD()
    Dim arrraydata(1 To 10) As XYZ
    FullingArray arrraydata
    OutArray arrraydata
End Sub

Sub FullingArray(ByRef arraydatafull() As XYZ)
    Dim elem As Integer
    For elem = LBound(arraydatafull) To UBound(arraydatafull)
        With arraydatafull(elem)
            .x = elem
            .y = elem
            .z = elem
        End With
    Next elem
    
End Sub

Sub OutArray(ByRef arraydatafull() As XYZ)
    Dim elem As Integer
    For elem = LBound(arraydatafull) To UBound(arraydatafull)
        With arraydatafull(elem)
            Debug.Print .x, .y, .z
        End With
    Next
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 04.03.2018, 16:03   #17
Vagmat
 
Регистрация: 02.03.2018
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
В отдельном модуле работает
Код:
Option Explicit
Public Type XYZ
    x As Integer
    y As Single
    z As Single
End Type

Sub RUN_MY_LITTLE_UGLY_BASTARD()
    Dim arrraydata(1 To 10) As XYZ
    FullingArray arrraydata
    OutArray arrraydata
End Sub

Sub FullingArray(ByRef arraydatafull() As XYZ)
    Dim elem As Integer
    For elem = LBound(arraydatafull) To UBound(arraydatafull)
        With arraydatafull(elem)
            .x = elem
            .y = elem
            .z = elem
        End With
    Next elem
    
End Sub

Sub OutArray(ByRef arraydatafull() As XYZ)
    Dim elem As Integer
    For elem = LBound(arraydatafull) To UBound(arraydatafull)
        With arraydatafull(elem)
            Debug.Print .x, .y, .z
        End With
    Next
End Sub
Благодарю. Буду пробовать.
Vagmat вне форума Ответить с цитированием
Старый 05.03.2018, 15:19   #18
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Vagmat,
посмотримте критично на свои сообщения и след. раз прежде чем цитировать бессмысленно, хорошо подумайте добавит-ли эта цитата хоть сколько-нибудь смысла сообщению
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 08.03.2018, 14:53   #19
Vagmat
 
Регистрация: 02.03.2018
Сообщений: 6
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Vagmat,
посмотримте критично на свои сообщения и след. раз прежде чем цитировать бессмысленно, хорошо подумайте добавит-ли эта цитата хоть сколько-нибудь смысла сообщению
Для тебя возможно это бессмысленное сообщение, т.к. оно адресовано не тебе.
Vagmat вне форума Ответить с цитированием
Старый 08.03.2018, 14:54   #20
Vagmat
 
Регистрация: 02.03.2018
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
В отдельном модуле работает
Код:
Option Explicit
Public Type XYZ
    x As Integer
    y As Single
    z As Single
End Type

Sub RUN_MY_LITTLE_UGLY_BASTARD()
    Dim arrraydata(1 To 10) As XYZ
    FullingArray arrraydata
    OutArray arrraydata
End Sub

Sub FullingArray(ByRef arraydatafull() As XYZ)
    Dim elem As Integer
    For elem = LBound(arraydatafull) To UBound(arraydatafull)
        With arraydatafull(elem)
            .x = elem
            .y = elem
            .z = elem
        End With
    Next elem
    
End Sub

Sub OutArray(ByRef arraydatafull() As XYZ)
    Dim elem As Integer
    For elem = LBound(arraydatafull) To UBound(arraydatafull)
        With arraydatafull(elem)
            Debug.Print .x, .y, .z
        End With
    Next
End Sub
Aleksandr H. Благодарю!
Vagmat вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Типы данных С++ werser Помощь студентам 1 13.03.2010 18:34
Типы данных psycho-coder Паскаль, Turbo Pascal, PascalABC.NET 6 04.02.2010 20:03
Типы данных nedden Помощь студентам 2 12.11.2008 17:18
Типы данных??? Рустам Общие вопросы Delphi 10 08.11.2007 08:03