Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 04.01.2013
Сообщений: 7

Подскажите код VBA для Excel - Объявление переменной

06.01.2013, 19:06. Показов 2313. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите с кодом ВБА для Экселя. В столбце "А" указан "код заказа" в стобце "B" цена. Возможно ли сделать так, что бы программа сама объявляла переменные с названием "X" и "код заказа", что бы потом присвоить им соответствующее значение "цена". Примерно так:
A | B | C
код заказа | цена | переменная
293 | 2566 | X293 = 2566
178 | 8999 | X178 = 8999
356 | 5426 | X356 = 5426

Смотрите файл "test2"

Заранее, премного благодарен
Вложения
Тип файла: xlsx test2.xlsx (11.3 Кб, 11 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.01.2013, 19:06
Ответы с готовыми решениями:

код на С#: объявление переменной
Здравствуйте. Написала программку для игры Memory. Вроде бы должна работать, когда исправлю ошибки. Сломала голову, но не понимаю,...

Код VBA для кнопки на листе Excel
Всем добрый день вечер ночь утро! Подскажите пожалуйста, может кто-нибудь знает чего прописать в коде VBA элемента "Кнопка"...

Как составить короткий код VBA (Excel) для задачи?
Здравствуйте! Интересно, какой будет самый короткий код VBA для детской задачи ниже. Условия. Три велосипедиста должны проехать из...

10
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
06.01.2013, 19:36
Visual Basic
1
2
3
4
5
6
7
8
9
Sub tt()
    Dim x As Object, a, i&
    a = [a1].CurrentRegion.Value
    Set x = CreateObject("scripting.dictionary"): x.comparemode = 1
    For i = 2 To UBound(a): x.Item(a(i, 1)) = a(i, 2): Next
 
    MsgBox x.Item(302)
 
End Sub
Вообще возможно тут хватает одного массива - в переменной a(2,1) значение 234, в a(2.2) значение 756

Добавлено через 5 минут
Можно объявить массив не a, а x
1
0 / 0 / 0
Регистрация: 04.01.2013
Сообщений: 7
06.01.2013, 22:48  [ТС]
Hugo121, спасибо огромное - дали толчок в нужном направлении,
уже читаю уокинбаха о массивах, и действительно здесь более уместен
одномерный массив, еще раз спасибо
когда сделаю, выложу
0
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
06.01.2013, 23:00
Ну думаю на практике для Вашей задаче нужен и массив, и словарь.
Данные в массив, его циклом заносим в словарь, далее в любой момент из словаря по одному значению получаем другое.
Что Вы и хотели - только не
X293 = 2566
а
X.item(293) = 2566
1
0 / 0 / 0
Регистрация: 04.01.2013
Сообщений: 7
07.01.2013, 01:47  [ТС]
Hugo121, согласен, собственно не важно, что именно будет стоять перед номером кода заказа, главное что бы его можно было использовать для сравнения дальше... и еще один вопрос в эту же степь

А как можно вытащить потом из словаря "цену" зная "код заказа"?
т.е. у меня есть еще одна таблица - это каталог продукции
столбец "A" - код заказа, в столбец "B" - нужно внести "цену"
как раз из этого же словаря (массива)
0
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
07.01.2013, 01:59
Так что, зря я в код добавил MsgBox x.Item(302)?
Специально ещё отделил строками, чтоб заметно было...
1
0 / 0 / 0
Регистрация: 04.01.2013
Сообщений: 7
07.01.2013, 02:14  [ТС]
Hugo121, это я понимаю, я знаю как сравнивать значения переменных, но не знаю как сравнивать
значение с названием в переменной (не понимаю)?
т.е. в другой таблице в ячейке а1 стоит значение 302 - значит нужно в b1 -вставить значение переменной x.Item(302)
0
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
07.01.2013, 02:20
Вот смотрите - Вы перебором массива заполнили словарь парами значений - код как ключ, цена как Item этого ключа.
Далее когда нужно найти цену - пишите одну строку:
MsgBox словарь.Item(код)
или
нужная_переменная = словарь.Item(код)
или прямо так и используйте без переменных словарь.Item(код)
Код может быть значение ячейки, значение элемента массива, результат ввода в inputbox (только типы преобразуйте), т.е. код=ключ.
1
0 / 0 / 0
Регистрация: 04.01.2013
Сообщений: 7
07.01.2013, 02:24  [ТС]
Hugo121, спасибо, вроде понял, попробую разобраться - тяжело с нуля поднимать
0
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
07.01.2013, 02:47
Да, но если это продолжение той предыдущей темы ( Скопировать цену из прайса в каталог ) - то там с первой таблицей геморроя много, потому никто и не ответил.

Добавлено через 5 минут
И на словаре сделать можно, но с циклом придётся помучиться.

Добавлено через 10 минут
Вот так например:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub tt()
    Dim a(), i&, cell As Range, el
    a = Sheets("прайс").[a1].CurrentRegion.Value
    
    With CreateObject("scripting.dictionary")
        For i = 2 To UBound(a): .Item(a(i, 1)) = a(i, 3): Next
 
        For Each el In Array(3, 6, 9)
            For Each cell In Sheets("каталог").[a1:i9].Columns(el).Cells
                If .exists(cell.Value) Then cell.Offset(-2, -1) = .Item(cell.Value)
            Next
        Next
    End With
    
End Sub
1
0 / 0 / 0
Регистрация: 04.01.2013
Сообщений: 7
07.01.2013, 02:51  [ТС]
Hugo121, Да это именно так и было, хотя на самом деле все выглядит еще куда тяжелее))) - это я делал ну очень упрощенный вариант теста. Вот теперь я уверен, что все получится!!! Спасибо тебе огромнейшее +100!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.01.2013, 02:51
Помогаю со студенческими работами здесь

Смена формата переменной в VBA Excel
Господа спецы, подскажите плз У меня есть запрашиваемая стринговая переменная, которую я потом хочу использовать при вычислениях. Могу...

Объявление переменной для методов
Здравствуйте! Мне необходимо несколько глобальных переменных для моего проекта, обьявил я их в файле mainwindow.h в public. Использую я их...

Подскажите по VBA Excel
Здравствуйте друзья. Помогите с одним вопросом. Пытаюсь создать макрос, позволяющий автоматически нумеровать ячейки первого столбца...

Не получается присвоить переменной vba из ячейки excel
Пожалуйста, помогите с этой проблемой. Суть вот в чем: у меня получилось записать макрос который бы делал картинку меньше в заданное кол-во...

Подскажите решение VBA Excel
1. Отладить все примеры, приведенные в программе. 2. Защитить книгу паролем. 3. Программа изменяет названия всех листов активной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period . Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru