منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : تعديل هذا الكود
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
كتبت هذا الكود
كود :
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
و مدة التنفيذ هى نفس مدة الأكواد السابقة تقريبآ