2013-06-10 3 views
7

Я очень новичок в написании на VB.NET, и я даже не понял, что между VB.NET и VBA существует значительная разница. Я пишу свое приложение в Visual Studio, но я понял, что мне нужно будет перенести его в VBA в Outlook, и есть некоторые проблемы с синтаксисом, с которыми мне нужно иметь дело. Я уже обыскал, но я не могу найти какую-либо определенную ссылку (например, msdn) для VBA или даже VB6, которая из того, что я слышу, намного ближе к VBA, чем VB.NET.списки и массивы в VBA

Здесь я укажу соответствующие разделы кода. Если кому-то нужен больше контекста, пожалуйста, дайте мне знать - я могу опубликовать все это, это не так долго. Я бы хотел, чтобы этот пост был как можно более простым.

Dim DateToday As String = String.Format("0:{yyyy/MM/dd}", DateTime.Now) 
Dim Computers As New SortedList() 
Dim disabledList As New List(Of String) 
'\\ four additional lists 
Dim compArray As Array 

... 

Computers.Add(ComputerName, ErrorState) 

Новые списки и отсортированный список дают Ожидаемое: Конец заявления в скобках после списка. В массиве представлен параметр Ожидаемый: идентификатор в массиве. Строка DateToday дает ожидаемый конец оператора на знаке равенства. Попытка добавить к отсортированному списку дает ожидаемое: =.

Я работаю с VB.NET в течение двух или трех дней, и я никогда раньше не работал с VBA или VB6, поэтому у меня просто нет опыта, необходимого для того, чтобы узнать, куда идти дальше. Если кто-то из вас захочет помочь мне, я бы очень признателен!

+1

Проще говоря, код, который вы пишете не является допустимым синтаксис VBA. VBA - это другой язык, и он не поддерживает платформу .NET. –

+1

Если вы ищете ссылки, MSDN действительно содержит исчерпывающую документацию для VBA: http://msdn.microsoft.com/en-us/library/gg278934%28v=office.14%29.aspx –

+1

Вы можете начать с Справочник по языку VBA в MSDN: http://msdn.microsoft.com/en-us/library/office/gg264383(v=office.14).aspx – Joe

ответ

9

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

Dim DateToday As String: DateToday = Format(Date, "yyyy/MM/dd") 
Dim Computers As New Collection 
Dim disabledList As New Collection 
Dim compArray(1 To 1) As String 

'Assign data to first item in array 
compArray(1) = "asdf" 

'Format = Item, Key 
Computers.Add "ErrorState", "Computer Name" 

'Prints "ErrorState" 
Debug.Print Computers("Computer Name") 

Коллекции не сортируются, поэтому, если вам нужно отсортировать данные, вы, вероятно, захотите использовать массив.

Вот ссылка на ссылку разработчика перспективы. http://msdn.microsoft.com/en-us/library/office/ff866465%28v=office.14%29.aspx

Другой отличный сайт, чтобы помочь вам начать это http://www.cpearson.com/Excel/Topic.aspx

Двигаясь все к VBA из VB.Net не собирается быть простым, так как не все типы данных, такие же, и у вас нет .Net framework. Если вы застряли, просто разместите код, который вы застряли в конвертировании, и вы, несомненно, получите некоторую помощь!

Edit:

Sub ArrayExample() 
    Dim subject As String 
    Dim TestArray() As String 
    Dim counter As Long 

    subject = "Example" 
    counter = Len(subject) 

    ReDim TestArray(1 To counter) As String 

    For counter = 1 To Len(subject) 
     TestArray(counter) = Right(Left(subject, counter), 1) 
    Next 
End Sub 
+0

Большое спасибо! Причина, по которой я использовал списки вместо массивов, заключалась в том, что программа не знает наверняка, сколько записей будет в массиве до ее завершения. Но я могу преобразовать его в массив. Глупый вопрос: мне нужно объявить массив в начале программы, или я могу подождать, пока не определю, сколько пробелов ему понадобится, а затем объявите его? – Wolves

+1

Вам нужно будет прокрутить данные, чтобы определить количество элементов, которые будут добавлены в массив, и сохранить число в переменной. Используйте ReDim для повторной инициализации массива до нужного размера или в зависимости от формата ваших данных, вы можете использовать резервную копию ReDim, чтобы дважды перехватывать ваши данные дважды, один раз для подсчета, один раз для чтения. Единственная проблема заключается в том, что если вы используете многомерный массив, вы можете изменить размер последнего измерения только. Я приведу пример в свой ответ за вас. – Ripster

+0

Спасибо! Это было очень полезно! – Wolves

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