2010-11-20 7 views
0

J'apprends vba aujourd'hui, je suis un débutant et j'ai quelques questions sur le code et comment il est écrit. J'ai téléchargé un exemple et j'essaie de le comprendre. Je connais quelques concepts de C. Je veux aussi dire que je ne suis pas un locuteur natif, et je suis d'avance désolé pour toute erreur en anglais.VBA doute débutant

Voici le code:

Set rg = Worksheets("TabPaciente").Range("Paciente") 

i = 0 
glQtdPaciente = 0 
Do While rg.Cells(i + 3, 1) <> "" 
i = i + 1 
Loop 
glQtdPaciente = i 

ReDim mPaciente(glQtdPaciente) 
p = Worksheets("TabFila").Range("p") 

InstCheg = 0 
For i = 1 To glQtdPaciente 
mPaciente(i).CodPaciente = rg.Cells(i + 2, 1) 

If Rnd < p Then 
    mPaciente(i).PriorPaciente = 1 
Else 
    mPaciente(i).PriorPaciente = 2 
End If 

mPaciente(i).IntvChegDistr = rg.Cells(i + 2, 2) 
mPaciente(i).Par1 = rg.Cells(i + 2, 3) 
mPaciente(i).Par2 = rg.Cells(i + 2, 4) 
mPaciente(i).Par3 = rg.Cells(i + 2, 5) 
mPaciente(i).Par4 = rg.Cells(i + 2, 6) 

Maintenant, j'ai eu quelques questions, et je serais heureux si quelqu'un peut me aider.

Quand j'écris

Set rg = Worksheets("TabPaciente").Range("Paciente") 

1er) forme maintenant chaque fois qu'il est écrit rg.somethingelsehere il sera feuille de calcul en sélectionnant « TabPaciente » et Range « Paciente »? Est-ce similaire au concept de #define en C?

Do While rg.Cells(i + 3, 1) <> "" 

2) Depuis rg a été « défini » comme la question ci-dessus de cette ligne, je peux comprendre comme « Aller à la feuille de travail TabPaciente et la gamme de sélection Paciente, et sélectionnez les cellules (ligne, colonne)? Qu'en est-il ce <> "", Je ne comprends pas est idée.

If Rnd < p Then 
    mPaciente(i).PriorPaciente = 1 
Else 
    mPaciente(i).PriorPaciente = 2 
End If 

3) Qu'est-ce mPaciente (i) et des moyens PriorPaciente? Je veux dire leur concept, est comme la feuille de travail et Range, je ne pense pas parce que je ne la feuille de travail nommé mPaciente

Merci d'avance pour votre aide .

+0

Vous avez plus de chances d'obtenir des réponses si vous ne posez qu'une seule question par question. – BenV

Répondre

1

1: A. Oui. B. #define sert à donner un nom significatif à une constante, RG est une référence à un objet.

2:

Do While rg.Cells(i + 3, 1) <> "" 

Loop 

Tout entre la première ligne et le mot-clé boucle sera répétée jusqu'à ce que les critères rg.Cells (i + 3, 1) <> "" est remplie. <> signifie pas égal, ou le contraire de =. "" signifie que la cellule est vide.

3: Le code que vous avez affiché ne s'affiche que lorsque mPaciente a été redéfini, donc je ne serai pas en mesure de vous dire son type. Faites une recherche dans tout l'exemple de code pour cela et vous serez en mesure de voir ce que c'est.