Я работаю с VBA, и мне нужно сохранять данные типа _1 _ => _ 2_, чтобы работать быстрее; Этот тип данных помогает мне кэшировать ответный текст из HTTP-запроса, увеличивая скорость запроса. Но я не знаю, как лучше это сделать? Мне нужен такой же тип данных, как и массив php с key=>value
! Спасибо за помощь!
Какой тип данных VBA лучше всего использовать: ключ = ›значение для сохранения данных, как в массиве PHP
comment
возможный дубликат Имеется ли в VBA структура словаря?
- person Filip Roséen - refp   schedule 13.07.2012
Ответы (2)
Вы смотрели объект словаря?
Он доступен как часть среды выполнения сценариев Microsoft. Наглядный пример того, как это добавить, дается этим SO-ответом.
Sub DictExample1()
Dim dict As Dictionary
Dim v As Variant
'Create the dictionary
Set dict = New Dictionary
'Add some (key, value) pairs
dict.Add "John", 34
dict.Add "Jane", 42
dict.Add "Ted", 402
'How many items do we have?
Debug.Print "Number of items stored: " & dict.Count
'We can retrieve an item based on the key
Debug.Print "Ted is " & dict.Item("Ted") & " years old"
'We can test whether an item exists
Debug.Print "We have Jane's age: " & dict.Exists("Jane")
Debug.Print "We have Zak's age " & dict.Exists("Zak")
'We can update a value by replacing it
dict.Item("Ted") = dict.Item("Ted") / 10
Debug.Print "Ted's real age is: " & dict.Item("Ted")
'We can add more items
dict.Add "Carla", 23
'And we can iterate through the complete dictionary
For Each v In dict.Keys
Debug.Print "Name: " & v & "Age: "; dict.Item(v)
Next
End Sub
(Источник: http://www.techbookreport.com/tutorials/vba_dictionary.html )
person
Irfarino
schedule
13.07.2012
Пожалуйста, не делайте ссылок на другие сайты. Это место, где вы можете написать решение.
- person Pawel Miechowiecki; 14.10.2015
@PawelMiechowiecki: Что плохого в предоставлении URL с дополнительной информацией? Специально потому, что для того, чтобы этот код работал, вам нужно включить ссылку на Microsoft Scripting Runtime, шаг которой описан в данном URL-адресе ...
- person Zé Carlos; 05.04.2017
Он сообщает мне о недопустимом использовании нового ключевого слова для Set dict = New Dictionary
- person Zanidd; 23.02.2018
Включение среды выполнения сценариев Microsoft в справочные материалы решит эту проблему.
- person Nagarajan Sathish; 04.03.2018
Поскольку среда выполнения сценариев Microsoft должна быть включена, означает ли это, что это может вызвать проблемы при совместном использовании вашей книги с кем-то еще, у кого она не включена, или находится в другой системе (например, Mac)?
- person kojow7; 06.10.2018
К сожалению, он недоступен в MAC
- person Si8; 13.03.2019
@ kojow7, да - поскольку необходимо указать среду выполнения сценариев, существует вероятность того, что при совместном использовании вашей книги у кого-то не будет той же версии среды выполнения, на которую вы ссылались. Однако есть два способа добавить ссылку, и один из них может в этом помочь. Если для добавления ссылки используется раннее связывание, другому пользователю потребуется такая же версия среды выполнения. При использовании позднего связывания программа может решить, какую среду выполнения использовать.
- person David Mays; 15.01.2021
Вышеуказанный ответ не будет работать из-за неправильного синтаксиса, вам нужно добавить Scripting Keword, прежде чем также включить Microsoft Sripting Run Time. Я пробовал его с использованием сценария и без него. до Dictionary в MS Word (2016) и без дозы не работает, даже если вы включили среду выполнения Microsoft Scripting
Dim dict As Scripting.Dictionary
Set dict = New Scripting.Dictionary
dict.Add "John", 34
dict.Add "Jane", 42
dict.Add "Ted", 402
Debug.Print "Number of items stored: " & dict.Count
Debug.Print "Ted is " & dict.Item("Ted") & " years old"
person
abdullah
schedule
10.12.2020
Это неверно, вам не нужно добавлять
Scripting.
, чтобы это работало. Кроме того, сценарии не являются Ключевое слово. Упоминается необходимость добавления среды выполнения сценариев Microsoft к ссылкам и даже прекрасно объясняется в связанном сообщении.
- person GWD; 10.12.2020
хорошо, я сделал это, но это вызвало ошибку недопустимое использование нового ключевого слова
- person abdullah; 13.12.2020
Привет, GWD. Вы проверили код в Ms. Word 2016 без скриптов.
- person abdullah; 13.12.2020
Вы правы, кажется,
Scripting.
нужен в Word, потому что там есть другой словарь. Вы тоже правы насчет ошибки! Просто для вашего сведения: ключевые слова, о которых идет речь, не Dictionary
, а скорее New
:)
- person GWD; 13.12.2020
просто новичок в vba, но когда я попробовал, сказал, что поэтому я подумал, что должен очистить его для кого-либо еще, спасибо за информацию об ошибке, теперь не о том, что это была за ошибка или почему она показывала
- person abdullah; 13.12.2020
@GWD - здесь используется метод с использованием Scripting.Dictionary из-за использования позднего связывания для ссылки на версию Microsoft Scripting Runtime. Существует еще один метод, также называемый ранним связыванием. При использовании позднего связывания требуется создание сценария, как показано здесь. Возможно, вы не смогли использовать Scripting.Dictionary, но использовали ли вы вместо этого раннее связывание?
- person David Mays; 15.01.2021
@DavidМожет нет, используемый здесь метод является примером раннее связывание. В нашем обсуждении возникла путаница, потому что в Excel VBA словарь может быть создан с ранним связыванием с использованием
Set dict = New Dictionary
, тогда как в Word VBA с ранним связыванием необходимо использовать Set dict = New Scripting.Dictionary
.
- person GWD; 16.01.2021
@GWD спасибо за разъяснения!
- person David Mays; 05.02.2021