2010-05-06 14 views
0

j'ai un tableau mis en placeLotusScript - élément Réglage en boucle

Dim managerList(1 To 50, 1 To 100) As String 

ce que je suis en train de faire, est fixé les premier, deuxième et troisième éléments de la ligne

managerList(index,1) = tempManagerName 
managerList(index,2) = tempIdeaNumber 
managerList(index,3) = 1  

Mais obtenez une erreur quand j'essaye de faire cela en disant que la variable d'objet n'est pas définie. Je maintiens l'index comme un entier, et la valeur correspond à un seul gestionnaire, mais je n'arrive pas à définir manuellement le troisième élément. Les premier et deuxième éléments sont correctement définis.

D'un autre côté, j'ai le code suivant qui permettra de l'élément à fixer,

For x=1 To 50 
    If StrConv(tempManagerName,3) = managerList(x,1) Then 
    found = x 
     For y=3 to 100 
     If managerList(x,y) = "" Then                  
      managerList(x,y) = tempIdeaNumber                        
      Exit for 
    End If 
     Next 

    Exit For 
    End If 
Next 

Il tourne à travers le réseau (latéralement) en essayant de trouver un élément vide. Idéalement, je voudrais définir l'index de l'élément sur lequel la variable y est dans le 3ème élément de la ligne, pour garder un compte du nombre d'idées sur la ligne.

Quelle est la meilleure façon de garder un compte comme ça? Une idée de pourquoi je reçois une variable d'objet ne pas définir d'erreur lorsque j'essaie de définir manuellement l'élément?

+0

Pouvez-vous partager plus de votre code? En outre, avez-vous essayé de passer le code avec le débogueur de script? Sur quelle ligne le code est-il erroné? –

Répondre

1

object variable not set signifie que vous essayez d'appeler des méthodes ou d'accéder à des propriétés sur un objet non initialisé. Je ne vois rien de tel dans les extraits de code que vous avez publiés, êtes-vous sûr que l'erreur se produit dans ces lignes?

Un bon moyen d'identifier les erreurs est d'inclure le numéro de module et de ligne dans le message d'erreur. Ajouter ce autour de votre sous-routine pour obtenir un message plus détaillé:

Sub Initialize 
    On Error Goto errorthrower 
    // 
    // your code goes here... 
    // 
    Exit sub 
ErrorThrower: 
    Error Err, Str$(Err) & " " & Error & Chr(13) + "Module: " & Cstr(Getthreadinfo(1)) & ", Line: " & Cstr(Erl) 
End sub 

(je d'abord trouvé cela sur Ferdy Christants blog)

Ce n'est pas tout à fait clair ce problème que vous essayez de résoudre, mais il semble que vous 1.50 "managers" qui peuvent avoir 1..100 "idées"? Je ferais un class pour les gestionnaires à la place:

Class manager 
    Private managername As String 
    Private ideas(1 To 100) As String 

    Sub new(managername As String) 
      Me.managername=managername 
    End Sub 

    // whatever methods you need.... 

End Class 

Ensuite, je garde une trace d'eux avec une liste de ces objets:

Dim managerlist List As manager 

    Dim key As String 
    key = Strconv(tempmanagername,3) 

    if not iselement(managerlist(key)) then 
     set managerlist(key) = new manager(key) 
    end if 

    Dim currentmanager As manager 
    Set currentmanager = managerlist(key) 

Ceci est seulement un exemple pour vous aider à démarrer, vous devrez l'adapter pour résoudre votre problème réel.