2013-06-10 15 views
7

Jestem bardzo nowy w pisaniu w VB.NET i nawet nie zdawałem sobie sprawy, że istnieje istotna różnica między VB.NET i VBA. Piszę swoją aplikację w Visual Studio, ale zdałem sobie sprawę, że będę musiał przenieść ją do VBA w Outlooku i mam kilka problemów z składnią, z którymi muszę się uporać. Przeszukałem już, ale nie mogę znaleźć żadnego ostatecznego odniesienia (takiego jak msdn) do VBA, a nawet do VB6, które z tego, co słyszę, jest znacznie bliższe VBA niż VB.NET.listy i tablice w VBA

Będę zawierać odpowiednie sekcje kodu tutaj. Jeśli ktoś potrzebuje więcej kontekstu, proszę dać mi znać - mogę opublikować całą sprawę, to nie jest tak długo. Chciałbym jednak, aby ten post był jak najprostszy.

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) 

Nowe wykazy i uporządkowany wykaz dać spodziewanych: Koniec Oświadczenie w nawiasie po listy. Tablica daje Oczekiwany: identyfikator w Array. Ciąg DateToday podaje oczekiwany koniec instrukcji na znaku równości. Próba dodania do posortowanej listy daje oczekiwany: =.

Pracowałem z VB.NET przez jakieś dwa lub trzy dni, a ja nigdy wcześniej nie pracowałem z VBA lub VB6, więc po prostu nie mam doświadczenia, aby wiedzieć, dokąd się udać. Jeśli którykolwiek z was byłby chętny by mi pomóc, byłbym bardzo wdzięczny!

+1

Mówiąc prościej, kod, który piszesz nie jest poprawna składnia VBA. VBA jest innym językiem i nie obsługuje środowiska .NET. –

+1

Jeśli szukasz referencji, MSDN ma rzeczywiście obszerną dokumentację dla VBA: http://msdn.microsoft.com/en-us/library/gg278934%28v=office.14%29.aspx –

+1

Możesz zacząć od Odwołanie do języka VBA w witrynie MSDN: http://msdn.microsoft.com/en-us/library/office/gg264383(v=office.14).aspx – Joe

Odpowiedz

9

Będziesz musiał zmienić niektóre typy danych, ale podstawy tego, co właśnie wysłałeś, mogą zostać przekonwertowane na coś podobnego do tego, biorąc pod uwagę typy danych, których użyłem, mogą być niedokładne.

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") 

Kolekcje nie mogą być sortowane, więc jeśli chcesz posortować dane, prawdopodobnie będziesz chciał użyć tablicy.

Oto link do odwołania do programu Outlook. http://msdn.microsoft.com/en-us/library/office/ff866465%28v=office.14%29.aspx

Innym doskonałym miejscu, aby pomóc Ci zacząć, to http://www.cpearson.com/Excel/Topic.aspx

Moving wszystko nad VBA z VB.Net nie będzie proste, ponieważ nie wszystkie typy danych są takie same i nie trzeba framework .Net. Jeśli utkniesz, opublikuj kod, utkniesz w konwersję, a na pewno otrzymasz pomoc!

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

Dziękuję bardzo! Powodem, dla którego korzystałem z list zamiast tablic, było to, że program nie wie na pewno, ile wpisów będzie w tablicy przed jej wykonaniem. Ale mogę przekształcić go w tablicę. Głupie pytanie: czy muszę zadeklarować tablicę na początku programu, czy mogę poczekać, aż określę, ile spacji będzie potrzebować, a następnie zadeklarować? – Wolves

+1

Będziesz musiał przeliczyć dane, aby określić liczbę elementów, które zostaną dodane do tablicy i zapisać liczbę w zmiennej. Użyj ReDim, aby ponownie zainicjować tablicę do poprawnego rozmiaru lub w zależności od formatu danych, możesz użyć ReDim preserve, aby zapętlić dane dwukrotnie, raz, aby policzyć, raz przeczytać. Jedynym problemem jest to, że jeśli korzystasz z tablicy wielowymiarowej, możesz zmienić rozmiar tylko ostatniego wymiaru. Podam przykład w mojej odpowiedzi dla ciebie. – Ripster

+0

Dziękujemy! To było bardzo pomocne! – Wolves