كتبت هذا الكود
كود :
Private Sub Command1_Click()
For I = 1 To NNUM
VV(I) = Text1(I).Text
If VV(I) > 50 Then GoTo 100
NNN = VV(I)
If NNN = 10 Then GoTo 10
If NNN = 20 Then GoTo 20
If NNN = 30 Then GoTo 30
If NNN = 40 Then GoTo 40
If NNN = 50 Then GoTo 50
100 Next I
10 Rem"هنا نكتب كود اللازم عندما تكون NNN=10"
GoTo 200
20 Rem"هنا نكتب كود اللازم عندما تكون NNN=20"
GoTo 200
30 Rem"هنا نكتب كود اللازم عندما تكون NNN=30"
GoTo 200
40 Rem"هنا نكتب كود اللازم عندما تكون NNN=40"
GoTo 200
50 Rem"هنا نكتب كود اللازم عندما تكون NNN=50"
200 End Sub
وطبعآ يمكن استبدال الجمل الشرطيةالخمسةالمتتالية باستخدام Select Case بدلآ من IF هكذا
كود :
Select Case NNN
Case "10": GoTo 10
Case "20": GoTo 20
Case "30": GoTo 30
Case "40": GoTo 40
Case "50": GoTo 50
End Select
وأريد كودآ أسهل من ذلك بحيث لا يمرالبرنامج كل مرة(مع كل قيمة لل I أثناء تنفيذ اللوب) على هذه الجمل الخمسة أوعلى بعضها حتى يتحقق الشرط
كيف يمكن مثلآ أن نجعل متغير يعبرعن رقم الجملة التى سنتوجه اليها فتكتب هذه الجمل الخمسة جملة واحدة بدون أى شرط (GoTo NNN)
أى يكون اللوب هكذا
كود :
For I = 1 To NNUM
VV(I) = Text1(I).Text
If VV(I) > 50 Then GoTo 100
NNN = VV(I)
GoTo NNN
NEXT I 100
ولكم ألف شكر
ملحوظة هامة
طبعآ من الممكن الاستغناء نهائيآ عن أرقام هذه الجمل وتنفيذ جواب الشرط فى نفس مكان الشرط هكذا مثلآ
كود :
If NNN = 10 Then
Rem"هنا نكتب كود اللازم عندما تكون NNN=10"
End If
وبالمثل مع باقى الجمل 20 و 30 و 40 و 50
ولكنى لا أريدها هكذا لأن هذا الكود اللازم عندما تكون NNN=10 طويل وسأحتاجه فى أكثر من موضع فلا داعى لاعادة كتابته فى كل موضع مرة وانما كلما احتجناه توجهنا لجملة معينة GO TO 10 فنجده مكتوبآ هناك
وبالمثل مع باقى الجمل 20 و 30 و 40 و 50
أهلا أخي الكريم , جرب هذه الطريقة :
كود :
Private Sub Command1_Click()
Dim NNUM As Integer
Dim VV As Integer
NNUM = 5
For I = 1 To NNUM
VV = Val(Trim$(Text1(I).Text))
If VV <= 50 Then
Codes VV
If VV = 1 Then Exit Sub
End If
Next I
End Sub
Private Sub Codes(CodeID As Integer)
If CodeID = 10 Then
Rem"هنا نكتب كود اللازم عندما تكون NNN=10"
ElseIf CodeID = 20 Then
Rem"هنا نكتب كود اللازم عندما تكون NNN=20"
ElseIf CodeID = 30 Then
Rem"هنا نكتب كود اللازم عندما تكون NNN=30"
ElseIf CodeID = 40 Then
Rem"هنا نكتب كود اللازم عندما تكون NNN=40"
ElseIf CodeID = 50 Then
Rem"هنا نكتب كود اللازم عندما تكون NNN=50"
End If
If CodeID = 10 Or CodeID = 20 Or CodeID = 30 Or CodeID = 40 Or CodeID = 50 Then
CodeID = 1
Else
CodeID = 0
End If
End Sub
جزاك الله خيرآ
ولكن هذا الكود كود شبيه بالذى كتبته ومازالت نفس المشكلة موجودة كما هى
وهى أن البرنامج يمر كل مرة على هذه الجمل الخمسة (أوعلى بعضها حتى يتحقق الشرط)
ففى كودى يمر كل مرة(مع كل قيمة لل I أثناء تنفيذ اللوب) على جمل IF الخمسة أوعلى جمل Case الخمسة
وفى كودك يمر كل مرة(كلما توجهنا لل Codes مع كل قيمة لل I أثناء تنفيذ اللوب) على جمل ElseIf الخمسة
وهذا المرفق يحسب مدة التنفيذ يثبت صحة كلامى
ففى جميع الأكواد تجد مدة التنفيذ واحدة تقريبآ
ربما لو توضح اكثر ايش اللي انت تبغاه بالضبط
تجد المساعد بشكل اوضح
في اي جملة لوب فالاجراء يمر على كل العنصر مالم تحدده باستناء مثلا
for i = 0 to 100
next i
سيعد معك للمئة
But
for i = 0 to 10
if i >=10 then exit for
next
هنا ستوقف عند الرقم عشرة
اذا حابب اللوب يتجاوز عن قيم معينة
for i = 0 to 100
if i <=10 or i>=50 then
else
print i
next
سيتجاوز من الصفر الى العشرة دون طباعة وسيطبع من احدى عشر الى تسع واربعين فقط وسيتجاهل من واحد وخمسين الى مئة
وكل ما قدمناه احتمالات فقط وبيس الحل لمشكلتك فحل المشكلة يبدأ من ايضاحك السليم عنها
بالتوفيق استاذ اسلام
اللي انا أبغاه بالضبط هو كما ذكرت فى البداية
إقتباس :وأريد كودآ أسهل من ذلك بحيث لا يمرالبرنامج كل مرة(مع كل قيمة لل I أثناء تنفيذ اللوب) على هذه الجمل الخمسة أوعلى بعضها حتى يتحقق الشرط
كيف يمكن مثلآ أن نجعل متغير يعبرعن رقم الجملة التى سنتوجه اليها فتكتب هذه الجمل الخمسة جملة واحدة بدون أى شرط (GoTo NNN)
فسؤالى لاعلاقة له باللوب وانما سؤالى عن
جمل IF الخمسة الموجودة داخله
مازالت هناك خمسة جمل متتالية نمر عليهم فى كل مرة
If NNN = 10 Then Call sub10
If NNN = 20 Then Call sub20
If NNN = 30 Then Call sub30
If NNN = 40 Then Call sub40
If NNN = 50 Then Call sub50
و مدة التنفيذ هى نفس مدة الأكواد السابقة تقريبآ