এক্সেল ভিবিএ - লুপের জন্য প্রস্থান করুন


181

forভিতরে কোনও শর্ত পূরণ হলে আমি আমার লুপটি প্রস্থান করতে চাই । শর্ত পূরণ হয়ে forগেলে আমি কীভাবে আমার লুপ থেকে প্রস্থান করতে পারি if? আমি আমার ifবক্তব্য শেষে এক প্রকার প্রস্থান মনে করি , তবে কীভাবে এটি কার্যকর হবে তা জানি না।

Dim i As Long
For i = 1 To 50
    Range("B" & i).Select
    If Range("B" & i).Value = "Artikel" Then
        Dim temp As Long
        temp = i
    End If
Next i
Range("A1:Z" & temp - 1).EntireRow.Delete Shift:=xlToLeft

13
If [condition] Then Exit Forআপনার লুপের ভিতরে
ড্যান

উত্তর:


333

আপনার লুপটি প্রস্থান করার জন্য তাড়াতাড়ি আপনি ব্যবহার করতে পারেন Exit For

If [condition] Then Exit For


@ নিক্সদা দয়া করে আপনার মন্তব্যটি সরান, হাইপারলিংক হিসাবে আপনি ভিবি.এনইটি ডকুমেন্টেশনে পয়েন্টগুলি ভাগ করেছেন, অফিস ভিবিএ ডকুমেন্টেশন নয়। ভিবিএ'র Exitজবানবন্দিতে ভিবি.এনইটি-র চেয়ে কম অপশন রয়েছে। আসলে, ভিবিএ কেবল সমর্থন করে: Exit Do Exit For Exit Function Exit Propertyএবং Exit Sub। ভিবিএর নেই Exit While। সঠিক লিঙ্কটি হ'ল: অফিস ভিবিএ রেফারেন্স-এক্সিট স্টেটমেন্ট
এক্সেল হিরো ২

@ এক্সেলহিরো সম্পন্ন
নিক্সদা

27

একটি লুপের প্রথম দিকে প্রস্থান করার আরেকটি উপায় হ'ল লুপের কাউন্টারটি পরিবর্তন করা:

For i = 1 To 10
    If i = 5 Then i = 10
Next i

Debug.Print i   '11

For i = 1 To 10
    If i = 5 Then Exit For
Next i

Debug.Print i   '5

3
একটি লুপ কাউন্টারকে নির্ধারণ করুন লুপটি স্পষ্টভাবে ছাড়ার চেয়ে অনেক কম দৃ rob় এবং ভবিষ্যতের প্রমাণ। কোডটি সংশোধন করা হয় যদি সম্পাদকটি এটি অন্য কোথাও ব্যবহার করা হচ্ছে তা যদি কোডটি পরিবর্তিত হয় তবে লুপ কাউন্টারটির সর্বাধিক পরিবর্তনের মাধ্যমে প্রাক্তনটি ভেঙে যেতে পারে। এটি For Eachলুপগুলিতেও প্রযোজ্য নয় ।
jpmc26

2
এটি কেবল Forলুপের সাথে সম্পর্কিত প্রশ্নের আরও একটি সমাধান (না For Each)। বিভিন্ন সমাধান এবং বিভিন্ন পরিস্থিতিতে প্রো এবং কনসের প্রয়োগ রয়েছে - উদাহরণস্বরূপ Go To labelএটি লজিক (নন স্ট্রাকচার্ড প্রোগ্রামিং) ব্রেক করে বা Continueভিবিএতে অনুপস্থিত কীওয়ার্ডের সম্ভাব্য কাজগুলির চেয়ে আরও শক্তিশালী ফর্ম্যাট । Exit Forযুক্তিগুলি যদি বস্তুগুলির যথাযথ পরিচ্ছন্নতা সম্পাদন না করে তবে এর যোগ্যতাগুলিও জিজ্ঞাসা করা যেতে পারে - খারাপ প্রয়োগগুলি এখানে যথেষ্ট প্রাসঙ্গিক নয় যদিও (@ জেএমপিএসি 26)
পল বিকা

0

নিম্নলিখিতটির সাথে প্রথম উত্তরটি দেওয়া সত্যই ইমো সেরা অনুশীলন:

if i = 0 then exit for

তবে এটি একটি বিকল্প:

Sub some()

Count = 0
End_ = ThisWorkbook.Sheets(1).Range("B1047854").End(xlUp).Row

While Count < End_ And Not ThisWorkbook.Sheets(1).Range("B" & Count).Value = "Artikel"
    Count = Count + 1
    If ThisWorkbook.Sheets(1).Range("B" & Count).Value = "Artikel" Then
        ThisWorkbook.Sheets(1).Range("A1:Z" & Count - 1).EntireRow.Delete Shift:=xlToLeft
    End If
Wend

End Sub
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.