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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2010, 14:11   #1
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
Восклицание Присвоение переменной значения из массива

Всем доброго дня!

Простая задача:
есть массив, надо присвоить значения массива переменным Public
Код:
Public f_product_id As String
Public f_manufacturer_name As String
Public f_product_sku_orig As String
Public f_product_sku_alt As String
Public f_product_s_desc As String
Public f_product_in_stock As String
Public f_pruduct_availability As String
Public f_vendor_price As String
Public f_product_price As String
Public f_product_sku As String
Public f_category_id As String
Public f_product_name As String
Public f_vendor_name As String
Public f_vehicle_brand As String
Sub GetVendorFieldSettings()
    Dim VendorList As Range: Set VendorList = Range("C16:I16")  'задается диапазон постащиков для настройки полей прайса!!!!!
    VendorList.Find(what:=VendorName, SearchOrder:=xlByColumns, LookIn:=xlValues).Select
    
    Dim arrVendorFieldSettings()
    arrVendorFieldSettings = Range(ActiveCell.Offset(1).Address, ActiveCell.Offset(14).Address).Value   'задается диапазон с настрйками!!!!
    ReDim arrVendorFieldSettings(1 To UBound(arrVendorFieldSettings, 1))
    
    f_product_id = arrVendorFieldSettings(1)
    f_manufacturer_name = arrVendorFieldSettings(2)
    f_product_sku_orig = arrVendorFieldSettings(3)
    f_product_sku_alt = arrVendorFieldSettings(4)
    f_product_s_desc = arrVendorFieldSettings(5)
    f_product_in_stock = arrVendorFieldSettings(6)
    f_pruduct_availability = arrVendorFieldSettings(7)
    f_vendor_price = arrVendorFieldSettings(8)
    f_product_price = arrVendorFieldSettings(9)
    f_product_sku = arrVendorFieldSettings(10)
    f_category_id = arrVendorFieldSettings(11)
    f_product_name = arrVendorFieldSettings(12)
    f_vendor_name = arrVendorFieldSettings(13)
    f_vehicle_brand = arrVendorFieldSettings(14)

End Sub
Проблема: любой елемент arrVendorFieldSettings(1), arrVendorFieldSettings(2) и т.д. имеет значение Empty.
В чем ошибка?
Maxx вне форума Ответить с цитированием
Старый 07.07.2010, 14:32   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

пробуйте так:
Dim arrVendorFieldSettings(1 to 14)
arrVendorFieldSettings = Range(ActiveCell.Offset(1).Address, ActiveCell.Offset(14).Address).Valu e 'задается диапазон с настрйками!!!!
'ReDim arrVendorFieldSettings(1 To UBound(arrVendorFieldSettings, 1))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 07.07.2010, 14:38   #3
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

IgorGO, спасибо, что откликнулись!
Теперь ошибка на строке
arrVendorFieldSettings = Range(ActiveCell.Offset(1).Address, ActiveCell.Offset(14).Address).Valu e
Cannot asign to array.
В общем вопрос был из-за того, что просто не пнятно, почему не работает.
В итоге сделал так:
Код:
Sub GetVendorFieldSettings()
    Dim VendorList As Range: Set VendorList = Range("C16:I16")  'задается диапазон постащиков для настройки полей прайса!!!!!
    VendorList.Find(what:=VendorName, SearchOrder:=xlByColumns, LookIn:=xlValues).Select
    
    f_product_id = ActiveCell.Offset(1)
    f_manufacturer_name = ActiveCell.Offset(2)
    f_product_sku_orig = ActiveCell.Offset(3)
    f_product_sku_alt = ActiveCell.Offset(4)
    f_product_s_desc = ActiveCell.Offset(5)
    f_product_in_stock = ActiveCell.Offset(6)
    f_pruduct_availability = ActiveCell.Offset(7)
    f_vendor_price = ActiveCell.Offset(8)
    f_product_price = ActiveCell.Offset(9)
    f_product_sku = ActiveCell.Offset(10)
    f_category_id = ActiveCell.Offset(11)
    f_product_name = ActiveCell.Offset(12)
    f_vendor_name = ActiveCell.Offset(13)
    f_vehicle_brand = ActiveCell.Offset(14)

End Sub
Maxx вне форума Ответить с цитированием
Старый 07.07.2010, 16:02   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Извините, штанга получилась...
У Вас не работало потому что ReDim обнуляет данные.
Вы сначала присвоили значения, а потом переопределили размеры массива, вот он и обнулился.
Есть ключевое слово Preserve.
ReDim Preserve МАССИВ(...) - при таком обьявлении существовавшие в МАССИВ значения сохраняются
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 21.07.2010, 13:53   #5
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

IgorGO, не первый раз выручаете! Спасибо огромное!
никогда ранее не обращал внимания на то, что сначала переопределял размеры массива, а потом присваивал значения
Maxx вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор из базы данных значения и присвоение его переменной. vandal123 БД в Delphi 1 20.05.2010 08:15
Присвоение переменной gajubas PHP 1 21.04.2010 20:18
Присвоение и передача значения переменной из HTML в PHP alexscorp1661 Помощь студентам 1 18.04.2010 11:33
Присвоение результата запроса, переменной Droid БД в Delphi 3 13.04.2010 16:34
присвоение переменной текущей даты KaimNotark Помощь студентам 1 29.01.2010 08:17