2014-10-22 2 views
0

Недавно я использовал много макро визуальных баз в моей PowerPoint. Все работало нормально, а затем мне нужно было добавить заявление Try и Catch. Казалось, это не сработало, но я подумал, что, возможно, это изменилось в более новых версиях. Теперь, пытаясь сделать словарь в Visual Basic с помощью PowerPoint, произошло то же самое. Это не сработало, и текст был красным.Powerpoint Visual Basic код не работает

Это код для словаря:

Dim test As New Dictionary(Of String, Integer) 
test.Add("1", 1) 

Есть в любом случае добавления словарей к нему при использовании PowerPoint? или этот код неправильный? То же самое с утверждениями try и catch?

+2

Вы, кажется, пытаетесь использовать VB.NET вместо VBA? Они не то же самое. –

+0

У VBA нет попытки захвата, вам понадобится 'On Error GoTo'. VBA - это зверь, все его собственный – engineersmnky

ответ

2

Необходимо указать ссылку на System.Collections.Generic.

В верхней части кода добавьте:

Imports System.Collections.Generic 
+0

Это только для словарей? –

+0

Да и все остальное в этой коллекции. – jmdon

1

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

Sub test() 
On Error Goto Handler 
    Dim test AS New Collection 
    test.Add "1", "27" 
    test.Add 15, "Monkeys" 
    Exit Sub 
Handler: 
    Msgbox "Error Number: " & Err & " Occurred. Its message text is: " & Error(Err) 
End Sub 

VBA Нет Try и Catch вы должны обработать все ошибки с On Error GoTo, то вы можете обрабатывать ошибки по количеству ошибок. See Here

Также примечание Я использовал Collection, который использует структуру Item и Key. Не уверен, что вы собираетесь с этим, но вы можете получить предметы по Key в Collection, что может быть и для вас. например

test.Item(1) 'will return "1" by index 
test.Item("27") 'will return "1" by key 
test.Item(2) ' will return 15 by index 
test.Item("Monkeys") 'will return 15 by key 
+0

Спасибо! Говорят, что в Интернете используются словари. Это выглядит так, как работают коллекции :) –

+0

Хорошо, поэтому все работало нормально, создавая его, но когда я добавил к нему, он дал мне ошибку «несоответствие типа» || Dim test As New Collection - test.Add «1», 1 –

+0

@ user1541397 Извините, но извиняюсь, что исправлен мой ответ «Collection» использует 'object, string', поэтому целое число является причиной его отказа. Также я изменил ключ, чтобы показать методы поиска. Если вы отправляете целое число, оно предполагает, что вы хотите индекс, со строкой он ищет ключ. – engineersmnky

Смежные вопросы