2013-06-10 10 views
7

Ich bin extrem neu beim Schreiben in VB.NET, und ich wusste nicht einmal, dass es einen signifikanten Unterschied zwischen VB.NET und VBA gab. Ich habe meine Anwendung in Visual Studio geschrieben, aber ich habe festgestellt, dass ich sie in Outlook auf VBA portieren muss, und es gibt einige Syntaxprobleme, mit denen ich mich befassen muss. Ich habe bereits gesucht, aber ich kann keine definitive Referenz (wie die msdn) für VBA oder sogar VB6 finden, die von dem, was ich höre, viel näher an VBA als VB.NET ist.Listen und Arrays in VBA

Ich werde hier die relevanten Abschnitte des Codes enthalten. Wenn jemand mehr Kontext benötigt, lass es mich wissen - ich kann die ganze Sache posten, es ist nicht so lange her. Ich möchte diesen Beitrag jedoch so einfach wie möglich halten.

Die neuen Listen und sortierte Liste geben erwartet: Ende der Anweisung in der Klammer nach Liste. Das Array gibt Expected: identifier bei Array an. Die Zeichenfolge DateToday gibt ein erwartetes Ende der Anweisung am Gleichheitszeichen an. Der Versuch, zur sortierten Liste hinzuzufügen, ergibt ein Expected: =.

Ich habe mit VB.NET für vielleicht zwei oder drei Tage gearbeitet, und ich habe nie mit VBA oder VB6 vorher gearbeitet, also habe ich einfach nicht die erforderliche Erfahrung, um zu wissen, wohin man von hier geht. Wenn jemand von euch bereit wäre, mir zu helfen, würde ich es sehr schätzen!

+1

Um es einfach auszudrücken, ist der Code, den Sie schreiben werden, ist nicht gültig VBA-Syntax. VBA ist eine andere Sprache und unterstützt das .NET-Framework nicht. –

+1

Wenn Sie nach Referenzen suchen, hat MSDN in der Tat umfassende Dokumentation für VBA: http://msdn.microsoft.com/en-us/library/gg278934%28v=office.14%29.aspx –

+1

Sie könnten mit dem starten VBA-Sprachreferenz auf MSDN: http://msdn.microsoft.com/en-us/library/office/gg264383(v=office.14).aspx – Joe

Antwort

9

Sie müssen einige Ihrer Datentypen ändern, aber die Grundlagen dessen, was Sie gerade gepostet haben, könnten in etwas ähnliches konvertiert werden, vorausgesetzt, die Datentypen, die ich verwendet habe, sind möglicherweise nicht korrekt.

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

Sammlungen also, wenn Sie Daten, die Sie wahrscheinlich ein Array verwenden möchten sortieren werden müssen, können nicht sortiert.

Hier ist ein Link zum Outlook Entwickler Referenz. http://msdn.microsoft.com/en-us/library/office/ff866465%28v=office.14%29.aspx

Ein weiterer großer Standort Sie ist http://www.cpearson.com/Excel/Topic.aspx

Umzug alles über VBA von VB.Net in Gang bringen, um gestartet wird nicht einfach sein, da nicht alle Datentypen gleich sind und Sie haben nicht das .Net-Framework. Wenn Sie nicht weiterkommen, geben Sie einfach den Code ein, an dem Sie gerade arbeiten, und Sie werden sicherlich Hilfe bekommen!

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

Vielen Dank! Der Grund, warum ich Listen anstelle von Arrays verwendete, war, dass das Programm nicht sicher weiß, wie viele Einträge es im Array geben wird, bevor es fertig ist. Aber ich kann es in ein Array konvertieren. Eine blöde Frage: Muss ich das Array am Anfang des Programms deklarieren, oder kann ich warten, bis ich bestimmt habe, wie viele Leerzeichen benötigt werden, und es dann deklarieren? – Wolves

+1

Sie müssen die Daten durchlaufen, um die Anzahl der Elemente zu bestimmen, die dem Array hinzugefügt werden, und die Nummer in einer Variablen zu speichern. Verwenden Sie ReDim, um das Array auf die richtige Größe neu zu initialisieren, oder, abhängig vom Format Ihrer Daten, können Sie ReDim preserve verwenden, um zu verhindern, dass Ihre Daten zweimal durchlaufen, einmal gezählt, einmal gelesen werden. Das einzige Problem ist, dass Sie bei Verwendung eines mehrdimensionalen Arrays nur die Größe der letzten Dimension ändern können. Ich werde ein Beispiel für meine Antwort geben. – Ripster

+0

Danke! Das war sehr hilfreich! – Wolves