دستور اضافه شدن یک شیت خاص با اضافه شدن یک سطر

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

    • 2013/12/14
    • 120
    • 5.00

    دستور اضافه شدن یک شیت خاص با اضافه شدن یک سطر

    سلام مجدد به دوستان و اساتید
    دوستان فایل اکسلی دارم که در آن نام و نام خانوادگی دانش آموزان در یک ستون توسط آموزگار باید وارد بشود.دوستان عزیز دستوری می خواهم که با آن دستور بشود شیتهایی به نام دانش آموزان که آموزگار نام آنها را وارد کرده است ،درست کرد.به عنوان مثال آموزگار بعد از اینکه نام دانش آموز اول را وارد کرد نرم افزار به طور اتومات یک شیت به نام ان دانش آموز ایجاد کند.(در ضمن این شیتی هم که نرم افزار ایجاد می کند باید یک کپی از شیت 1 که قبلا ایجاد کرده ایم باشد.)
  • Amir Ghasemiyan

    • 2013/09/20
    • 4598
    • 100.00

    #2
    نوشته اصلی توسط ali65e
    سلام مجدد به دوستان و اساتید
    دوستان فایل اکسلی دارم که در آن نام و نام خانوادگی دانش آموزان در یک ستون توسط آموزگار باید وارد بشود.دوستان عزیز دستوری می خواهم که با آن دستور بشود شیتهایی به نام دانش آموزان که آموزگار نام آنها را وارد کرده است ،درست کرد.به عنوان مثال آموزگار بعد از اینکه نام دانش آموز اول را وارد کرد نرم افزار به طور اتومات یک شیت به نام ان دانش آموز ایجاد کند.(در ضمن این شیتی هم که نرم افزار ایجاد می کند باید یک کپی از شیت 1 که قبلا ایجاد کرده ایم باشد.)

    با عرض سلام مجدد خدمت دوست عزيز

    شما بايد از vba استفاده كنيد.

    يك نمونه ساده خدمت شما. شخصي سازيش با خودتون

    کد:
    Sub sheetnaming()
        Name = Range("A1").Value
        Sheets("Sheet1").Select
        Sheets("Sheet1").Copy After:=Sheets(Worksheets.Count)
        ActiveSheet.Name = Name
    End Sub

    کامنت

    • ali65e

      • 2013/12/14
      • 120
      • 5.00

      #3
      سلام مجدد خدمت دوست عزیزم
      امیر جان تابعی که زحمت کشیده بودی برای سلول a1 کاملا درست عمل می کنه ولی برای سایر آیتمهای ستون a عمل نداره. برای مثلا سلول a2 چه تغیراتی باید توو مارکو بدم؟فایلشو پیوست می کنم خدمتتون .اگه امکان داره روو همین فایل اصلاح کنید برام بفرستید.متشکرم
      فایل های پیوست شده

      کامنت

      • Amir Ghasemiyan

        • 2013/09/20
        • 4598
        • 100.00

        #4
        نوشته اصلی توسط ali65e
        سلام مجدد خدمت دوست عزیزم
        امیر جان تابعی که زحمت کشیده بودی برای سلول a1 کاملا درست عمل می کنه ولی برای سایر آیتمهای ستون a عمل نداره. برای مثلا سلول a2 چه تغیراتی باید توو مارکو بدم؟فایلشو پیوست می کنم خدمتتون .اگه امکان داره روو همین فایل اصلاح کنید برام بفرستید.متشکرم

        من دقيق متوجه منظورتون نشدم. ولي فكر كنم همچين چيزي مد نظرتون باشه.
        شما در سلول B1 مقداري رو وارد ميكنيد كه در واقع نشان دهنده شماره سطر خواهد بود. مثلا اگه بخواهيد سلول A4 رو به عنوان نام استفاده كنيد بايد سلول B1 رو برابر 4 قرار بدين

        کد:
        Sub sheetnaming()
            C = Range("B1").Value
            Name = Range("A" & C).Value
            Range("B1").Value = C + 1
            Sheets("Sheet1").Select
            Sheets("Sheet1").Copy After:=Sheets(Worksheets.Count)
            ActiveSheet.Name = Name
        End Sub

        کامنت

        • ali65e

          • 2013/12/14
          • 120
          • 5.00

          #5
          سلام مجدد
          امیر جان گویا منظورمو خوب نتونستم برسونم.امیر جان واسه اینکه منظورمو بهتر برسونم دو تا فایل ضمیمه می کنم که توضیحات لازمو تووش دادم.ممنون
          فایل های پیوست شده

          کامنت

          • Amir Ghasemiyan

            • 2013/09/20
            • 4598
            • 100.00

            #6
            نوشته اصلی توسط ali65e
            سلام مجدد
            امیر جان گویا منظورمو خوب نتونستم برسونم.امیر جان واسه اینکه منظورمو بهتر برسونم دو تا فایل ضمیمه می کنم که توضیحات لازمو تووش دادم.ممنون

            سلام دوست عزيز
            خب الان كامل متوجه شدم

            شما در سلول B1 اين فرمول رو بنويسيد

            کد:
            =COUNTIF(A:A;"*")-1
            در vba هم اين دستورات رو قرار بدين

            کد:
            Sub sheetnaming()
            c = Range("B1").Value
            For e = 2 To c
                Sheets("Sheet2").Select
                Name = Range("A" & e).Value
                Sheets("Sheet1").Select
                Sheets("Sheet1").Copy After:=Sheets(Worksheets.Count)
                ActiveSheet.Name = Name
            Next e
            End Sub

            کامنت

            • ali65e

              • 2013/12/14
              • 120
              • 5.00

              #7
              داداش گل دستت درد نکنه.خیلی عالی بود

              کامنت

              • ali65e

                • 2013/12/14
                • 120
                • 5.00

                #8
                امیر جان چگونه میشه تغییراتی توو این ماکرو بدیم که ماکرو،نام شیت را ، در سلول a1 همان شیتی که ایجاد کرده است بنویسد؟

                کامنت

                • khakzad

                  • 2010/03/17
                  • 2034
                  • 85.00

                  #9
                  با اجازه جناب قاسمیان
                  دوست عزیز.اون خط کد آخر میاد اسم یک سلول از شیت اول رو به عنوان نام شیت در نظر می گیره.
                  شما یک خط کد مشابه همین اضافه کنید ولی بجای اینکه activesheet.name رو مساوی متغیر name بذارید. activesheet.range("a1")i رو مساوی متغیر مورد نظر قرار بدید.
                  سوالی بود در خدمتم
                  [CENTER][B][COLOR=#008000][SIZE=3]محصولات و جزوات آموزش تخصصی [URL="https://excelpedia.net/"]اکسل[/URL] در:

                  [URL="https://excelpedia.net/category/excel-functions/"]برترین مرجع تخصصی پارسی اکسل[/URL]
                  [URL="http://www.exceliran.com/shop/"]جامعه اكسل ايرانيان: فروشگاه[/URL][/SIZE][/COLOR][/B]
                  :wcom:

                  [B][URL="https://excelpedia.net/"]آموزش اکسل تخصصی[/URL] و [URL="https://excelpedia.net/excel-ninja/"]پیشرفته[/URL] - [URL="https://excelpedia.net/"]تهران[/URL][/B]
                  [EMAIL="h.khakzad@yahoo.com"]h.khakzad@yahoo.com[/EMAIL]
                  [/CENTER]

                  کامنت

                  • ali65e

                    • 2013/12/14
                    • 120
                    • 5.00

                    #10
                    سلام دوست عزیز
                    خانم خاکزاد این تغییری که شما زحمت کشیده بودید گفتید،تقریبا درست عمل می کنه ولی مشکلی که داره اینه نام شیت هایی که ایجاد می شوند دیگر برابر با نام دانش آموزان نمی شود .
                    متن ماکرویی که اعمال شده این است
                    Sub sheetnaming()
                    Sheets("Sheet2").Select
                    c = Range("I11").Value
                    For e = 2 To c + 1
                    Name = Range("G" & e).Value
                    Sheets("Sheet20").Select
                    Sheets("Sheet20").Copy After:=Sheets(Worksheets.Count)
                    ActiveSheet.Range("a1") = Name
                    Sheets("Sheet2").Select
                    ActiveSheet.Hyperlinks.Add Anchor:=Range("G" & e), Address:="", SubAddress:=Name & "!A1", TextToDisplay:=Name


                    Range("G2:G40").Select
                    With Selection.Font
                    .Name = "B Nazanin"
                    .Strikethrough = False
                    .Superscript = False
                    .Subscript = False
                    .OutlineFont = False
                    .Shadow = False
                    .TintAndShade = 0
                    .ThemeFont = xlThemeFontNone
                    End With
                    Selection.Font.Underline = xlUnderlineStyleNone
                    With Selection.Font
                    .Color = -10477568
                    .TintAndShade = 0
                    End With
                    With Selection.Font
                    .Color = -10477568
                    .TintAndShade = 0
                    End With
                    Next e
                    End Sub
                    Last edited by ali65e; 2013/12/23, 12:07.

                    کامنت

                    • khakzad

                      • 2010/03/17
                      • 2034
                      • 85.00

                      #11
                      کد قبلی رو حذف نکینید
                      اینو زیرش اضافه کنید
                      شما activesheet.name رو حذف کردید!
                      [CENTER][B][COLOR=#008000][SIZE=3]محصولات و جزوات آموزش تخصصی [URL="https://excelpedia.net/"]اکسل[/URL] در:

                      [URL="https://excelpedia.net/category/excel-functions/"]برترین مرجع تخصصی پارسی اکسل[/URL]
                      [URL="http://www.exceliran.com/shop/"]جامعه اكسل ايرانيان: فروشگاه[/URL][/SIZE][/COLOR][/B]
                      :wcom:

                      [B][URL="https://excelpedia.net/"]آموزش اکسل تخصصی[/URL] و [URL="https://excelpedia.net/excel-ninja/"]پیشرفته[/URL] - [URL="https://excelpedia.net/"]تهران[/URL][/B]
                      [EMAIL="h.khakzad@yahoo.com"]h.khakzad@yahoo.com[/EMAIL]
                      [/CENTER]

                      کامنت

                      • ali65e

                        • 2013/12/14
                        • 120
                        • 5.00

                        #12
                        ممنون خانم خاکزاد.کاملا درست بود.فقط خانم خاکزاد می بخشید چطوری میشه کاری کرد که متنی که همین ماکرو در سلول a1 می نویسد بافونت خاصی "b nazanin 13.5"باشد؟

                        کامنت

                        • khakzad

                          • 2010/03/17
                          • 2034
                          • 85.00

                          #13
                          خودتون که کدشو در ادامه گذاشتین
                          کد:
                          [RIGHT][COLOR=#333333]Range("G2:G40").Select[/COLOR]
                          [COLOR=#333333]With Selection.Font[/COLOR]
                          [COLOR=#333333].Name = "B Nazanin"[/COLOR][/RIGHT]
                          حالا رنج رو همون a1 بذارید.البته این قسمتی از کدتون هست.خواستم یادآوری کنم که خودتون بلدید
                          [CENTER][B][COLOR=#008000][SIZE=3]محصولات و جزوات آموزش تخصصی [URL="https://excelpedia.net/"]اکسل[/URL] در:

                          [URL="https://excelpedia.net/category/excel-functions/"]برترین مرجع تخصصی پارسی اکسل[/URL]
                          [URL="http://www.exceliran.com/shop/"]جامعه اكسل ايرانيان: فروشگاه[/URL][/SIZE][/COLOR][/B]
                          :wcom:

                          [B][URL="https://excelpedia.net/"]آموزش اکسل تخصصی[/URL] و [URL="https://excelpedia.net/excel-ninja/"]پیشرفته[/URL] - [URL="https://excelpedia.net/"]تهران[/URL][/B]
                          [EMAIL="h.khakzad@yahoo.com"]h.khakzad@yahoo.com[/EMAIL]
                          [/CENTER]

                          کامنت

                          • ali65e

                            • 2013/12/14
                            • 120
                            • 5.00

                            #14
                            خانم خاکزاد این قسمتی که در ادامه تابع من اومده فقط داده های g2 تا g40 شیت 2 رو تغییر فونت میده .من می خواهم تمام سلول های a2 ای که ماکرو در شیت هایی که قبلا ایجاد کرده، تغییر فونت بده.

                            کامنت

                            • khakzad

                              • 2010/03/17
                              • 2034
                              • 85.00

                              #15
                              خب همینه!
                              مشابه این کد رو داخل حلقه for که قبلا نوشتید، بعد از اون خط کدی که اضافه می کنید بنویسید.activesheet.range("a1")i رو select کنید.بقیش مشابه کد خودتون
                              (هدف این هست که شما مسلط بشید به کدها و . . . برای همین مستقیم نمی نویسم.سعی می کنم راهنمایی کنم )
                              موفق باشید
                              Last edited by khakzad; 2013/12/23, 15:20.
                              [CENTER][B][COLOR=#008000][SIZE=3]محصولات و جزوات آموزش تخصصی [URL="https://excelpedia.net/"]اکسل[/URL] در:

                              [URL="https://excelpedia.net/category/excel-functions/"]برترین مرجع تخصصی پارسی اکسل[/URL]
                              [URL="http://www.exceliran.com/shop/"]جامعه اكسل ايرانيان: فروشگاه[/URL][/SIZE][/COLOR][/B]
                              :wcom:

                              [B][URL="https://excelpedia.net/"]آموزش اکسل تخصصی[/URL] و [URL="https://excelpedia.net/excel-ninja/"]پیشرفته[/URL] - [URL="https://excelpedia.net/"]تهران[/URL][/B]
                              [EMAIL="h.khakzad@yahoo.com"]h.khakzad@yahoo.com[/EMAIL]
                              [/CENTER]

                              کامنت

                              چند لحظه..