web-dev-qa-db-fra.com

listes et tableaux dans VBA

Je suis extrêmement nouveau dans l'écriture en VB.NET, et je ne savais même pas qu'il y avait une différence significative entre VB.NET et VBA. J'ai écrit mon application dans Visual Studio, mais j'ai réalisé que je devrais la porter sur VBA dans Outlook, et il y a des problèmes de syntaxe que je dois résoudre. J'ai déjà cherché, mais je ne trouve aucune sorte de référence définitive (comme le msdn) pour VBA ou même VB6, qui d'après ce que j'entends est beaucoup plus proche de VBA que VB.NET.

Je vais inclure les sections pertinentes du code ici. Si quelqu'un a besoin de plus de contexte, faites-le moi savoir - je peux poster le tout, ce n'est pas si long. Je voudrais garder ce post aussi simple que possible, cependant.

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)

Les nouvelles listes et la liste triée donnent Expected: End of Statement entre parenthèses après List. Le tableau donne l'identifiant Expected: au tableau. La chaîne DateToday donne une fin attendue de l'instruction au signe égal. La tentative d'ajout à la liste triée donne un Expected: =.

Je travaille avec VB.NET depuis peut-être deux ou trois jours, et je n'ai jamais travaillé avec VBA ou VB6 auparavant, donc je n'ai tout simplement pas l'expérience requise pour savoir où aller d'ici. Si l'un d'entre vous était disposé à m'aider, je l'apprécierais vraiment!

8
Wolves

Vous devrez modifier certains de vos types de données, mais les bases de ce que vous venez de publier pourraient être converties en quelque chose de similaire, étant donné que les types de données que j'ai utilisés peuvent ne pas être précis.

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

Les collections ne peuvent pas être triées, donc si vous devez trier des données, vous souhaiterez probablement utiliser un tableau.

Voici un lien vers la référence du développeur Outlook. http://msdn.Microsoft.com/en-us/library/office/ff866465%28v=office.14%29.aspx

Un autre excellent site pour vous aider à démarrer est http://www.cpearson.com/Excel/Topic.aspx

Tout déplacer vers VBA à partir de VB.Net ne va pas être simple car tous les types de données ne sont pas identiques et vous n'avez pas le framework .Net. Si vous êtes bloqué, il suffit de poster le code que vous êtes en train de convertir et vous obtiendrez sûrement de l'aide!

Éditer:

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
13
Ripster