VBA怀疑初学者

时间:2010-11-20 23:46:37

标签: excel vba

我今天正在学习vba,我是新手,我对代码及其编写方式有一些疑问。我已经下载了一个示例,我正在尝试理解它。我知道C的一些概念。我也想说我不是母语人士,我很抱歉提前用英语搞错了。

以下是代码:

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)

现在我有了一些问题,如果有人可以帮助我,我会很高兴。

写作时

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

1st)现在每次写完rg.somethingelsehere表格,它将选择工作表“TabPaciente”和Range“Paciente”?这类似于C中的#define概念

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

2nd)由于rg被“定义”,就像上面的问题一样,我可以理解为“转到工作表TabPaciente并选择范围Paciente,并选择单元格(行,列)?这个<> ""怎么样,我不明白这个想法。

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

3rd)mPaciente(i)和PriorPaciente是什么意思?我的意思是他们的概念,就像Worksheet和Range一样,我不这么认为,因为我没有名为mPaciente的工作表。

先谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

1:A。是的。 B. #define用于为常量创建有意义的名称,RG是对象的引用。

2:

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

Loop

将重复第一行和Loop关键字之间的任何内容,直到标准rg.Cells(i + 3,1)&lt;&gt;满足了。“ &LT;&GT;手段不等于,或与=相反。 “”表示单元格为空。

3:您显示的代码仅在重新定义mPaciente时显示,因此我无法告诉您它的类型。在整个代码示例中查找它,您将能够看到它是什么。