نمايش درصد پيشرفت در vba

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • Amir Ghasemiyan

    • 2013/09/20
    • 4598
    • 100.00

    نمايش درصد پيشرفت در vba

    سلام دوستان

    تو اين تاپيك ميخوام براتون نحوه ساخت يك درصد پيشرفت فرايند رو بهتون آموزش بدم

    خب اول نتيجه نهايي رو بهتون نشون ميدم.
    Click image for larger version

Name:	Untitled.jpg
Views:	1
Size:	9.7 کیلو بایت
ID:	143423
    کد:
    [COLOR=#008000]Sub code()
    
    
    خب حالا بريم مرحله به مرحله اين درصد پيشرفت رو بسازيم.
    
    اول از همه يك فرم ميسازيم با دوتا ليبل و يك فريم. فريم براي كادر، يك ليبل براي نشون دادن ميزان پيشرفت (قسمت آبي رنگ) يك ليبل براي نشون دادن درصد (قسمت عددي)
    
    حالا روي فرم كليك ميكنيم و F7 رو ميزنيم. تمامي كدها رو حذف كرده و كدهاي زير رو بهش اضافه ميكنيم
    
    
    کد:
    'Hide a UserForm's Close Button
    'Find the userform's Window
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    'Get the current window style
    Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
    'Set the new window style
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Const GWL_STYLE = -16
    Const WS_SYSMENU = &H80000
    Private Sub UserForm_Initialize()
       Dim hWnd As Long, lStyle As Long
       'Which type of userform
       If Val(Application.Version) >= 9 Then
          hWnd = FindWindow("ThunderDFrame", Me.Caption)
       Else
          hWnd = FindWindow("ThunderXFrame", Me.Caption)
       End If
       'Get the current window style and turn off the Close button
       lStyle = GetWindowLong(hWnd, GWL_STYLE)
       SetWindowLong hWnd, GWL_STYLE, (lStyle And Not WS_SYSMENU)
    End Sub
    اين كد باعث ميشه كه دكمه خروج از بالاي فرم حذف بشه و پنجره قابل بسته شدن نباشه كه البته ضروري هم نيست. من ترجيح دادم دكمه حذف بشه بعد در ادامه اين كد رو اضافه ميكنيم:
    کد:
    Private Sub UserForm_Activate()
    code
    End Sub
    اين كد باعث ميشه بعد از فعال شدن فرم درصد پيشرفت يكسري كد اجرا بشه خب حالا يك ماژول ميسازيم و اين كدها رو داخل ماژول ميذاريم:
    [COLOR=#008000]Dim i As Integer, j As Integer, pctCompl As Single[/COLOR] For i = 1 To 100 [COLOR=#008000] pctCompl = i[/COLOR] [COLOR=#008000] progress pctCompl[/COLOR] Application.Wait Now() + TimeSerial(0, 0, 1) Next i [COLOR=#008000]Unload UserForm1[/COLOR] [COLOR=#008000]End Sub[/COLOR] [COLOR=#008000]Sub progress(pctCompl As Single)[/COLOR] [COLOR=#008000]UserForm1.Text.Caption = pctCompl & "%"[/COLOR] [COLOR=#008000]UserForm1.Bar.Width = pctCompl * 2[/COLOR] [COLOR=#008000]DoEvents[/COLOR] [COLOR=#008000]End Sub[/COLOR]
    اين كد همان فرايندي هست كه قرار هست انجام بشه و ما درصد پيشرفت اين فرايند رو متوجه بشيم.
    قسمت هايي كه با سبز مشخص كردم اجباري هست و بايد وجود داشته باشه. بقيش با توجه به كاري كه ميخوايم انجام بديم تغيير ميكنه
    خب در آخر هم كد زير رو در ادامه كدهاي قبل اضافه ميكنيم
    کد:
    Sub CallFrom()
        UserForm1.Show
    End Sub
    اين كد براي شروع فرايند هست و درواقع با اجراي اين كد فرايند استارت ميخوره

    به همين راحتي يك فرم درصد پيشرفت ساختيم. من يك نمونه هم پيوست ميكنم كه بهتر بتونين استفاده كنيد[/COLOR]
    فایل های پیوست شده
    Last edited by Amir Ghasemiyan; 2014/12/01, 09:48. دلیل: اصلاح كدها
  • afshin181
    • 2013/05/28
    • 1

    #2
    salam ba tashakor
    chetor mishe zamane in process ro kahesh dad?

    کامنت

    • Amir Ghasemiyan

      • 2013/09/20
      • 4598
      • 100.00

      #3
      نوشته اصلی توسط afshin181
      salam ba tashakor
      chetor mishe zamane in process ro kahesh dad?

      دوست عزیز ضمن خوش آمدگویی خدمت شما، لطف کنید فارسی تایپ کنید

      در خصوص سوال شما هم عرض کنم که این خط از کدها رو تغییر بدین
      کد:
      Application.Wait Now() + TimeSerial(0, 0, 0.35)
      من الان تغییر دادم که بدونین چطوری باید عمل کنید

      کامنت

      • sohrabahmadi

        • 2012/05/03
        • 142
        • 35.00

        #4
        سلام و تشکر از شما چطور میشه زمان این پیشرفت رو با زمان اجرای یک کد هماهنگ کرد؟
        [b][color=#6B8E23]تو خشنود باشی و ما رستگار[/color][/b]

        کامنت

        • پیمان طهماسبی

          • 2020/04/17
          • 93
          • 54.00

          #5
          با سلام و احترام
          این فرم بای من باز نمیشه
          قابل ذکر هست که ویندوز 10 و 64 بیتی دارم
          لطفا راهنمایی بفرمایید

          کامنت

          چند لحظه..