ویژوال بیسیک در اکسل

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • Foa.neh

    • 2015/04/19
    • 12

    ویژوال بیسیک در اکسل

    باسلام
    دوستان من در فایل اکسل یک کد ویژوال بیسیک قرار دادم که جواب میده بدون مشکل
    این کد در مورد تغییر کپشن تعداد زیادی لیبل هست!
    میخوام این کد رو یکبار برای هر مثلا 100تا لیبل بنویسیم و فکر کنم باید از حلقه for each استفاده کنم ولی متاسفانه بلد نیستم چطوری . وگرنه باید 100 بار کد رو بنویسم و عوض کنم!
    نکته دوم اینه که کدی که برای تکی جواب میده باید در رویداد کلیک اون لیبل ثبت بشه در صورتی که نمیدونم حتی اگه کد واحدی برای هر 100 لیبل پیدا کردم در چه رویدادی باید ثبت بشه
    کد این هست:


    Private Sub Label2_Click
    If Label2.Caption = "1" Then
    Label2.Caption = "2"
    Label2.BackColor = &H80FF&
    Else
    Label2.Caption = "1"
    Label2.BackColor = &H8EF3A2
    End If
    End Sub
  • DOLFIN

    • 2014/01/18
    • 149

    #2
    سلام . با فرض اینکه تمام لیبیل ها درون یک usrform هست و شما می خواهید برای تمام 100 لیبل کد مورد نظر رو داشته باشید از این کد می تونید استفاده کنید : (در غیر این صورت لطفا بیشتر توضیح دهید)
    * توجه کنید که شما باید این کد رو در رویدادهای userform ایجاد کنید یعنی روی userform کلیک کنید و این کد رو پیست کنید .
    کد:
    Private Sub UserForm_Initialize()
    Dim i
    For i = 1 To 100
    If Controls("Label" & i).Caption = "1" Then
    Controls("Label" & i).Caption = "2"
    Controls("Label" & i).BackColor = &H80FF&
    Else
    Controls("Label" & i).Caption = "1"
    Controls("Label" & i).BackColor = &H8EF3A2
    End If
    Next i
    End Sub
    [CENTER][FONT=times new roman][SIZE=7][I][B][COLOR=#0000ff] خانه اکسل - [url]http://excelhouse.blog.ir[/url][/COLOR][/B][/I][/SIZE]
    [/FONT][/CENTER]

    کامنت

    • Foa.neh

      • 2015/04/19
      • 12

      #3
      ممنون
      من از یوزرفرم استفاده نکردم بلکه تو خود صفحه اکسل لیبل گذاشتم
      فایل اصلی رو اپلود میکنم خودتون مشاهده کنید هدفم ایجاد لیست حضور غیاب دانشگاه هست البته در نهایت خیلی فایل سنگین میشه بعلت استعمال زیاد از اشیا در فابل اکسل احتمالا بهتره ببا ویژوال بیسک کار کنم بجای اکسل یا شاید با همین یوزر فرم! نظر شما چیه؟ من اطلاعات زیادی ندارم البته! ولی اگه ممکنه با همین وضعیت درست بشه بفرمائید که همینو علی الحساب راه بندازم ! وگرنه باید تعداد زیادی خط الکی برای هر لیبل بنویسم!
      فایل های پیوست شده
      Last edited by Foa.neh; 2015/07/29, 11:20.

      کامنت

      • mokaram
        مدير تالار اکسل و بانک اطلاعاتی

        • 2011/02/06
        • 1805
        • 74.00

        #4
        نوشته اصلی توسط Foa.neh
        ممنون
        اصلا چنین رویدادی پیدا نکردم
        دوست عزیز کد نوشته شده توسط کاربر محترم Dolfin برای فرم هست در صورتیکه که شما لیبل هاتون را تو شیت ایجاد کردید بنابراین کد ارائه شده به کارتون نمیاد

        اگر تونستم کدش را بنویسم حتما در اختیارتون قرار میدم باتشکر
        [CENTER][IMG]http://forum.exceliran.com/signaturepics/sigpic909_10.gif[/IMG]
        [/CENTER]

        کامنت

        • Foa.neh

          • 2015/04/19
          • 12

          #5
          نوشته اصلی توسط M_R_M
          دوست عزیز کد نوشته شده توسط کاربر محترم Dolfin برای فرم هست در صورتیکه که شما لیبل هاتون را تو شیت ایجاد کردید بنابراین کد ارائه شده به کارتون نمیاد

          اگر تونستم کدش را بنویسم حتما در اختیارتون قرار میدم باتشکر
          بله متوجه شدم ویرایش کردم پستمو، فایل هم آپلود کردم
          ممنون

          کامنت

          • Ali Parsaei
            مدير تالارتوابع اکسل

            • 2013/11/18
            • 1522
            • 71.67

            #6
            سلام،

            اين کار خيلي غير حرفه اي است! چرا از ديتا وليديشن استفاده نمي کنيد، محدوديت خاصي داريد يا صرفا" برحسب سليقه شخصي مي خواهيد بدين نحو باشد؟

            ضمنا" فايلتان را که نگاه مي کردم اشتباهاتي را هم داخلش ديدم، شما فعلا" 66 رديف داريد ولي 294 تا spinner (يعني: Click image for larger version

Name:	45.jpg
Views:	1
Size:	1.6 کیلو بایت
ID:	126754) در آن تشکيل داده ايد! يعني چند تا چند تا روي همديگر ايجاد شده و شما هم احتمالا" متوجه نشده ايد!
            Last edited by Ali Parsaei; 2015/07/30, 18:15.
            [SIGPIC][/SIGPIC]

            کامنت

            • Foa.neh

              • 2015/04/19
              • 12

              #7
              سلام
              ممنون از پاسخ شما
              از دیتا ولیدیشن چطور استفاده کنم؟ مثلا عدد بدم و برا هر عدد رنگ سلول عوض شه؟ یا دارپ لیست با دو گزینه حاضر و غایب ایجاد کنم و رنگش عوض شه؟
              اگه اینطور مثال ها منظورتونه که نیاز به تایپ کردن دارن یا دو سه کلیلک برای هر نفر بکار نمیان چون این فایل حضور غیاب قراره با سرفیس بدون کیبورد و با تاچ استعمال بشه و با یک تاچ روی سلول اعمال بشه، حقیقتش ابتدا از چک باکس استفاده کرده بودم ولی چون نتونستم شی چک باکس رو بزرگ کنم و بعلت نیاز به دقت در تاچ روی چک باکس و ... تصمیم به عوض کردنش با لیبل کردم و به نظرم خیلی خوبه بنظرتون چه مشکلی داره اینکار؟ بجز بحث کدنویسیش!؟ اگه راه حل بهتری دارید پیشنهاد بدید ممنون میشم
              در مورد اسپینرها هم من نمیدونستم ممنون که اطلاع دادید
              در حال حال ارم بصورت آماتوری با خود اکسل تمام لیبل ها رو تک به تک کدنویسی میکنم البته با خود اکسل دارم کاری میکنم که نیاز نباشه کل کد رو دستی بنویسم ولی در آخر فکر کنم چندهزار خط کد میشه و کاملا اماتوری

              کامنت

              • DOLFIN

                • 2014/01/18
                • 149

                #8
                سلام
                در فایل زیر کدی تعریف شده که با دبل کلیک روی سلول مورد نظر در محدوده حضور و غیاب یک userform نمایش داده می شود.
                در این یوزر فروم شما می توانید با کلیک بر روی لیبل حاضر و غیاب را مشخص و با کلیک بر روی ثبت ، مقدار لیبل را به سلولی که روی آن دبل کلیک شده بود انتقال دهید.
                * برای تغییر محدوده ای که می خواهید با دبل کلیلک یوزر فروم را نمایش بدهد کافی است به قسمت ویژوال شیت مورد نظر ( یعنی شیت 2) بروید و قسمت رنج کد زیر را تغییر دهید :
                کد:
                Intersect(Target, Range("e4:t69"))
                موفق باشید.
                فایل های پیوست شده
                Last edited by DOLFIN; 2015/08/01, 12:48.
                [CENTER][FONT=times new roman][SIZE=7][I][B][COLOR=#0000ff] خانه اکسل - [url]http://excelhouse.blog.ir[/url][/COLOR][/B][/I][/SIZE]
                [/FONT][/CENTER]

                کامنت

                چند لحظه..