我今天正在学习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的工作表。
先谢谢你的帮助。
答案 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时显示,因此我无法告诉您它的类型。在整个代码示例中查找它,您将能够看到它是什么。