2010-11-20 5 views
0

Bugün vba öğreniyorum, yeni bir kullanıcıyım ve kodla ve nasıl yazıldığına dair birkaç sorum var. Bir örnek indirdim ve anlamaya çalışıyorum. Bazı C kavramlarını biliyorum. Ayrıca ana dili konuştuğumu söylemek istemiyorum ve İngilizce bir hata için şimdiden özür dilerim.VBA şüphe başlangıcı

İşte kod:

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) 

Şimdi bazı sorular var ve birisi bana yardımcı olabilir, ben memnun olurum. Şimdi her şey üzerinde o çalışma "Paciente" "TabPaciente" ve Range seçeceğiniz için rg.somethingelsehere yazıldığı

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

1) Form yazmak

? Bu C de #define kavramına benzer mi? rg ı gibi anlayabilir bu çizginin üzerinde soru gibi "tanımlanan" bu yana

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

2) "TabPaciente basıp aralık Paciente çalışma sayfası gidin ve ne bu <> "" hakkında hücreleri (satır, sütun)? seçmek, bunun fikir alamadım.

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

3) mPaciente (i) yapar ve PriorPaciente? onların konsepti demek Worksheet ve Range gibi, ben hiçbir çalışma sayfası var çünkü öyle düşünmüyorum ne anlama gelir? mPaciente ismi

Yardımlarınız için şimdiden teşekkür ederiz .

+0

Soru başına yalnızca bir soru soruyorsanız, yanıt almanız daha olasıdır. – BenV

cevap

1

1: A. Evet. B. #define, bir sabit için anlamlı bir ad oluşturmak içindir, RG bir nesneye bir başvurudır.

2: İlk hat ve döngü anahtar kelime arasındaki

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

Loop 

şey kriterleri rg.Cells (i + 3, 1) <> "" ulaşılana kadar tekrarlanır. <> anlamına gelir, veya eşittir anlamına gelir =. "" hücrenin boş olduğu anlamına gelir.

3: Görüntülenen kod yalnızca mPaciente yeniden tanımlandığında gösterilir, bu nedenle size türünü söyleyemeyeceğim. Bunun için tüm kod örneğinde bir arama yapın ve ne olduğunu görebileceksiniz.