PDA

View Full Version : خروج از While



alizanganeh
دوشنبه 25 اردیبهشت 1391, 11:01 صبح
سلام دوستان
ییخشید سوالم خیلی سادست ولی هرچی فکر میکنم یادم نمیاد
دستوری نوشتم بصورت
While
.
.
.
.
Wend

حالا وسط درستور میخوام شرطی بذارم که اگر برقرار بود از while خارج بشه
مثل exit for برای دستور for
چه کنم؟
ممنون

ho3ein.3ven
دوشنبه 25 اردیبهشت 1391, 11:24 صبح
سلام
فک نکنم همچین دستوری باشه
می تونی به این صورت از حلقه خارج بشی .
Private Sub Command1_Click()
p = 6
While p > 0
p = p - 1
Print p
If p = 3 Then GoTo kj
Wend
kj:
Print "sad"
End Sub

alizanganeh
دوشنبه 25 اردیبهشت 1391, 11:34 صبح
دستور goto رو زدم
نمیشه

just4froum
دوشنبه 25 اردیبهشت 1391, 11:35 صبح
یا بدین شکل :

While 1
'.
'.
'.
'.
'.
'.
'if .... then goto WhileExit
Wend
WhileExit:

شکل کلی دستور جناب ho3ein.3ven

just4froum
دوشنبه 25 اردیبهشت 1391, 11:38 صبح
دستور goto رو زدم
نمیشه

من الان امتحان کردم و کاملا هم جواب میده.

می تونی این جوری هم عمل کنی

Dim WhileExit As Boolean
WhileExit = True
While WhileExit = True
'.
'.
'.
'if ...... then WhileExit = false
Wend

alizanganeh
دوشنبه 25 اردیبهشت 1391, 11:45 صبح
من الان امتحان کردم و کاملا هم جواب میده.

می تونی این جوری هم عمل کنی

Dim WhileExit As Boolean
WhileExit = True
While WhileExit = True
'.
'.
'.
'if ...... then WhileExit = false
Wend



ممنون
الان اینو زدم
من وقتی بعد از اون شرطی که قرار whileexit رو false کنه چیزی مینویسم ، وقتی while exit رو false هم میکنم بازم اون دستور بعد از شرط اجرا میشه

ASedJavad
دوشنبه 25 اردیبهشت 1391, 11:53 صبح
سلام

شما بهتره بجای استفاده از حلقه while ... wend از حلقه do while .... loop استفاده کنید و بعد با دستور exit do از حلقه خارج شید.

just4froum
دوشنبه 25 اردیبهشت 1391, 11:54 صبح
ممنون
الان اینو زدم
من وقتی بعد از اون شرطی که قرار whileexit رو false کنه چیزی مینویسم ، وقتی while exit رو false هم میکنم بازم اون دستور بعد از شرط اجرا میشه

درسته مشکل این دومیه اینه که نمیشه وسط حلقه ازش خارج شد .

alizanganeh
دوشنبه 25 اردیبهشت 1391, 12:00 عصر
سلام

شما بهتره بجای استفاده از حلقه while ... wend از حلقه do while .... loop استفاده کنید و بعد با دستور exit do از حلقه خارج شید.




هیچ فرقی با هم نمیکنن ؟

alizanganeh
دوشنبه 25 اردیبهشت 1391, 12:06 عصر
آقا با do while هم مثل همون قبلیه و فرقی نکرد
دیگه خسته شدم

اگر دارید یک کدی چیزی بهم بدید تا بتونم به textbox قالب ایمیل بدم تا اگر رعایت نکرد ارور بده
ممنون

ASedJavad
دوشنبه 25 اردیبهشت 1391, 12:17 عصر
فکر می کنم مشکل شما جای دیگه ای باشه

والا کدی مثل کد زیر راحت کار میکنه:
a = 0
Do While a < 50
If a = 10 Then Exit Do
a = a + 1
Loop
MsgBox a

just4froum
دوشنبه 25 اردیبهشت 1391, 12:31 عصر
میشه شما بگید می خواید با while چه کار کنید ؟

فکر کنم این جوری بهتر بشه بهتون کمک کرد.

alizanganeh
دوشنبه 25 اردیبهشت 1391, 18:43 عصر
آقا اونو ولش کن

ببین این یک کدیه که میگم در موردش :

Dim FE As Variant
p = 1
While PEmail <> "@"
Email = Right(txtEmail, p)
PEmail = Left(Email, 1)
FE = FE + PEmail
p = p + 1
Wend
MsgBox FE
Exit Sub


من میخوام با این کد از محتوی txtEmail ، از سمت راست تمامی کاراکترها رو بگیرم و این کد تا زمانی اجرا میشه که به @ نرسیده و وقتی به @ رسید از حلقه خارج میشه
به اینصورت که هر کاراکتری رو که بدست میاره به مقداری که توی متغیر FE هست اضافه میکنه ولی نمیدونم چرا دخل حلقه به FE هیچی اضافه نمیکنه ولی اگر خارج از حلقه به FE مقدار بدید کار میکنه
میتونید کمکم کنید؟
ممنون

just4froum
دوشنبه 25 اردیبهشت 1391, 19:06 عصر
کدت برای من درست کار می کنه میشه بگی دقیقا مشکلت چیه ؟ ( یه مثال بزن )

arenaw
دوشنبه 25 اردیبهشت 1391, 19:36 عصر
منظوزتو کامل نفهمیدم که دقیقا کدت چیکار میخواد کنه؟!
ولی این کد هم از سمت راست هرچی قبل از "@" باشه رو به متغیرت اضافه میکنه:

FE = FE & Mid(txtEmail, InStrRev(txtEmail, "@") + 1)

alizanganeh
دوشنبه 25 اردیبهشت 1391, 23:49 عصر
دوستان خودم درستش کردم
دستتون مرسی