دستور حرکت مکان نما از یک ستون به ستون دیگر

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

    • 2010/10/06
    • 168

    دستور حرکت مکان نما از یک ستون به ستون دیگر

    سلام به همه دوستان
    من در اکسل چند تا ستون دارم که مقادیر یکی از این ستونها به ستونهای دیگه مربوط می باشد می خواهم به محض ورود یک داده در ستون اصلی مکان نما به سلول مربوط با این مقدار در ستون دیگر برود .آیا این کار در اکسل امکان پذیر هست :huh:
    [b]The beginning , is the most important part of the work [/b]
    [b]( آغاز هر كار مهمترين بخش آن است )[/b]
  • mrexcel

    • 2010/02/03
    • 436
    • 81.00

    #2
    RE: دستور حرکت مکان نما از یک ستون به ستون دیگر

    ببينيد از موارد زير كدام براي شما قابل استفاده است
    يك سلول حاوي فرمول را كه انتخاب كرديم با كليد ميانبر ctrl+[ و ctrl+] ميتوان سلولهاي پيش نياز و پس نياز اين فرمول را انتخاب كرد
    با استفاده از منوي formula گزينه formula auditing زير گزينه trace .... ميتوان با استفاده از فلش ها سلولهاي پيش نياز و پس نياز را مشاهده نمود
    با استفاده از ابزار ctrl+g قسمت special گزينه precedent و dependence سلولهاي پيش نياز و پس نياز را انتخاب ميكند
    زنگ تفريح دنيا هميشگي نيست ، ساعت بعد حساب داريم

    کامنت

    • sh_amar

      • 2010/10/06
      • 168

      #3
      RE: دستور حرکت مکان نما از یک ستون به ستون دیگر

      سلام
      مثل اينكه من سئوالم را درست نپرسيدم منظور من سلولها و ستونهاي داراي فرمول نبوده بلكه يك سري داده از نوع متني است
      فايل من مربوط به انواع تشويقي هايي است كه يك سازمان به كارمندان خود مي دهد مي خواهم به محض مثلا ورود تشويقي از نوع ريالي در ستون انواع تشويقي ، مكان نما به ستون مربوط به مقادير ريالي رفته و منتظر درج مقدار ريالي از طرف كاربر گردد .
      ممنون مي شم اگه بتونيد من را راهنمايي كنيد .
      [b]The beginning , is the most important part of the work [/b]
      [b]( آغاز هر كار مهمترين بخش آن است )[/b]

      کامنت

      • shamsololama

        • 2010/02/15
        • 940

        #4
        RE: دستور حرکت مکان نما از یک ستون به ستون دیگر

        با درود فراوان

        برای این کار می بایست امنیت ماکرو را روی Low قرار دهی

        با نوشتن این کد در زیر روال Worksheet_Calculate و اضافه کردن یک ستون کمکی و نوشتن یک تابع این کار عملی است که نمونه آن را ضمیمه کرده ام در این نمونه وقتی که در ستون تشویقی مقداری و یا نوشته ای را وارد کنید پس از اینتر کردن به دو ستون جلوتر که مقدار تشویقی است رفته تا مقدار را وارد کنید که شما می توانید این کار را روی هر کدام از ستونهایی که مورد نظرتان باشد انجام دهید

        کد:
        Private Sub Worksheet_Calculate()
        On Error Resume Next
        If Application.Selection.Column = 4 Then
        Selection.Offset(-1, 3).Select
        End If
        End Sub

        فایل ضمیمه:
        [attachment=103]
        فایل های پیوست شده
        ---------------------------------------------------------------------------------------------------
        بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم [size=x-small](دکتر شریعتی)[/size]
        shamsololama@yahoo.com
        09177733411

        کامنت

        • sh_amar

          • 2010/10/06
          • 168

          #5
          RE: دستور حرکت مکان نما از یک ستون به ستون دیگر

          سلام بر شما
          خيلي ممنون از راهنمايي تان البته مشكل من اينه كه اصلا با ماكرو ها و برنامه نويسي اكسل آشنا نيستم ولي با وجود فايل ارسالي شما فكر كنم بتونم مشكلمو حل كنم
          با تشكر فروان از شما
          [b]The beginning , is the most important part of the work [/b]
          [b]( آغاز هر كار مهمترين بخش آن است )[/b]

          کامنت

          • sh_amar

            • 2010/10/06
            • 168

            #6
            RE: دستور حرکت مکان نما از یک ستون به ستون دیگر

            سلام بر شما

            در زمينه راهنمايي كه كرديد چند تا سئوال دارم اگه زحمتي نيست و حوصله اش را داشتيد لطفا پاسخ دهيد
            ممكنه كه سئوالات من خيلي ابتدايي باشه ولي چون من اصلا با كدها كار نكردم در انجام اين برنامه دچار اشكال شدم ( البته با آقاي علي محمدي هماهنگ كردم و انشاء الله به زودي عضو تالار آموزشي ويژوال بيسيك مي شم )
            اول اينكه شما فرموديد بايد امنيت ماكرو را روي LOW قرار دهيم يعني چي و از كجا مي شود اين امكان را فراهم كرد آيا اين به ستون A كه با مقادير صفر پر شده مربوط ميشود ؟
            دوم اينكه در دستور Selection.Offset(-1, 3).Select, اعداد داخل پرانتز مربوط به چيست
            و مورد ديگه اينكه در فايل من در ستون تشويقي ( مثل فايل ضميمه شما) چند نوع تشويقي داريم مثلا نقدي , كتبي , هديه و غيره و ستونهاي كناري ستون تشويقي به ترتيب مقدار مبالغ ,نوع هديه و...است حال من مي خوام اگر نوع تشويقي نقدي خورد مكان نما به ستون مقدار مبالغ برود و منتظر وارد كردن مقدار نقدي شود و اگر در رديف بعدي در ستون نوع تشويقي هديه درج شد مكان نما به ستون مربوطه ( نوع هديه ) رفته و به همين ترتيب يعني در مورد اول به يك ستون بعد از ستون انواع تشويقي برود و در مورد دوم به دو ستون بعد از ستون انواع تشويقي .
            با تشكر فراوان از شما
            [b]The beginning , is the most important part of the work [/b]
            [b]( آغاز هر كار مهمترين بخش آن است )[/b]

            کامنت

            • shamsololama

              • 2010/02/15
              • 940

              #7
              RE: دستور حرکت مکان نما از یک ستون به ستون دیگر

              با درود فراوان


              اول اينكه شما فرموديد بايد امنيت ماكرو را روي LOW قرار دهيم يعني چي و از كجا مي شود اين امكان را فراهم كرد آيا اين به ستون A كه با مقادير صفر پر شده مربوط ميشود ؟

              *** امنیت ماکرو را می توانی از آدرس زیر روی Low قرار دهی ازمنو تولز را انتخاب کن سپس ماکرو را انتخاب کن و بعد سکیوریتی در اینجا منوی باز شده که می توانی از بین آنهاLow را تیک بزنی
              و ربطی به ستونها ندارد ولی اگر فایلی که من برایت فرستاده ام و تغییر مکان نما کار می کند یعنی اینکه امنیت ماکرو شما خودش روی Low قرار دارد

              Tools - macro - security


              .................................................. .........................................

              دوم اينكه در دستور Selection.Offset(-1, 3).Select, اعداد داخل پرانتز مربوط به چيست؟

              **در اینجا Selection یع .نی سلی یا سلهایی که سلکت و یا همان انتخاب کرده ایم
              و در ادامه Offset(-1, 3) w آفست نیز آدرسی است که بر اساس همان سل سلکت شده می دهیم
              مثال:
              در یک کوچه ایستاده ایم کسی از ما می پرسد کوچه بنفشه کجاست می گوییم یک کوچه بالاتر سه کوچه سمت راست برو در واقع سه تا تا کوچه راست و یک کوچه بالاتر نسبت به کوچه ای که در آن ایستاده ایم آدرس داده ایم در Offset(-1, 3) w نیز شماره -1 و 3 همان سه کوچه سمت راست و یک کوچه بالاتر است است یعنی نسبت به سلی که سلکت کرده ایم سه سل جلوتر و یا همان سمت راست یک سل بالاتر پس در پرانتز عدد اول برای بالا و پائین و عدد دوم برای جلوتر و عقب تر است در واقع مثل محور مختصات که مرکز آن همان سلی است که سلکت کرده ایم

              امیدوارم به اینصورت که توضیح داده ام توانسته باشم منظور را برسانم





              و مورد ديگه اينكه در فايل من در ستون تشويقي ( مثل فايل ضميمه شما) چند نوع تشويقي داريم مثلا نقدي , كتبي , هديه و غيره و ستونهاي كناري ستون تشويقي به ترتيب مقدار مبالغ ,نوع هديه و...است حال من مي خوام اگر نوع تشويقي نقدي خورد مكان نما به ستون مقدار مبالغ برود و منتظر وارد كردن مقدار نقدي شود و اگر در رديف بعدي در ستون نوع تشويقي هديه درج شد مكان نما به ستون مربوطه ( نوع هديه ) رفته و به همين ترتيب يعني در مورد اول به يك ستون بعد از ستون انواع تشويقي برود و در مورد دوم به دو ستون بعد از ستون انواع تشويقي .؟

              *** برای انجام این کار نیز طریق همان مثالی که زدم برای هر چند تا ستون که خواستی می توانی انجام دهی و اگر خواستی نمونه ای از فرمی که داری و توضیحی از خواسته هات برایم بفرست تا از روی فرم و جدول خودت برایت مثال بزنم
              ---------------------------------------------------------------------------------------------------
              بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم [size=x-small](دکتر شریعتی)[/size]
              shamsololama@yahoo.com
              09177733411

              کامنت

              • sh_amar

                • 2010/10/06
                • 168

                #8
                RE: دستور حرکت مکان نما از یک ستون به ستون دیگر

                سلام بر شما
                خيلي ممنون متوجه توضيحات شما در مورد كاربرد توابع شدم و در فايل خودم نيز اجرا كردم فقط يك مورد ديگه به نظر من اين كد يك نقص دارد و اينكه تمايزي ميان نوع تشويقي ها قائل نيست و با وارد كردن هر نوع تشويقي مكان نما مثلا به دو ستون جلوتر مي رود در حالي كه بايد طوري اين كد نوشته شود كه اگر نوع تشويقي " نقدي " بود مثلا يك ستون جلو رود و اگر نوع تشويقي "هديه " بود دو ستون جلو رود و بقيه موارد ...
                نظر شما در اين مورد چيه ؟
                [b]The beginning , is the most important part of the work [/b]
                [b]( آغاز هر كار مهمترين بخش آن است )[/b]

                کامنت

                • shamsololama

                  • 2010/02/15
                  • 940

                  #9
                  RE: دستور حرکت مکان نما از یک ستون به ستون دیگر

                  با درود فراوان

                  در این مورد کد را با هر شرطی که بخواهی میتوانی بنویسی یعنی طوری بنویسی که با توجه به نوع تشویقی به ستون مورد نظر شما برود و این کافی است که یک شرط if به دستور آن اضافه کنی و من طرح کلی آن را نوشته ام که شما با خواسته های خود می توانی آن را تغییر دهی
                  ---------------------------------------------------------------------------------------------------
                  بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم [size=x-small](دکتر شریعتی)[/size]
                  shamsololama@yahoo.com
                  09177733411

                  کامنت

                  • sh_amar

                    • 2010/10/06
                    • 168

                    #10
                    RE: دستور حرکت مکان نما از یک ستون به ستون دیگر

                    سلام
                    بله خودم هم فكر كردم كه نياز به يك IF دارد ولي با توجه به عدم آشنايي بنده با برنامه نويسي در اكسل نتونسته بودم آن را درست بنويسم اميدوارم با مطالعه فايل اكسل آموزشي شما به مهارت دست يابم
                    باز هم به خاطر گذاشتن وقت و راهنمايي اينجانب ازتون سپاسگزارم .
                    [b]The beginning , is the most important part of the work [/b]
                    [b]( آغاز هر كار مهمترين بخش آن است )[/b]

                    کامنت

                    • shamsololama

                      • 2010/02/15
                      • 940

                      #11
                      RE: دستور حرکت مکان نما از یک ستون به ستون دیگر

                      با درود فراوان

                      حرکت مکان نما بر اساس نوع تشویقی A , B ,C را در فایل ضمیمه قرار داده ایم می توانید ببینید و اگر در کدنویسی آن مشکل و یا سئوالی داشتید بپرسید


                      فایل نمونه

                      [attachment=106]
                      فایل های پیوست شده
                      ---------------------------------------------------------------------------------------------------
                      بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم [size=x-small](دکتر شریعتی)[/size]
                      shamsololama@yahoo.com
                      09177733411

                      کامنت

                      • sh_amar

                        • 2010/10/06
                        • 168

                        #12
                        RE: دستور حرکت مکان نما از یک ستون به ستون دیگر

                        سلام استاد گرامي
                        فايل ضميمه شما را ديدم يكي و دو سئوال برايم پيش آمده اول اينكه ستون كمكي (ستون A ) را براي چي درست كرديد ؟
                        دوم اينكه شما فرموديد در تابع offset عدد اول نشان دهنده تعداد رديف هاي جابه جايي نسبت به سل انتخاب شده ماست و علامت منفي آن حركت به بالا را نشان ميدهد حال آنكه در فايل شما پس از انتخاب ستون 4 (ستون تشويقي ) ما نياز داريم كه يك رديف به پايين بياييم پس چرا شما از 1- در تابع Offset استفاده كرديد ؟
                        ممنون از كمك شما
                        [b]The beginning , is the most important part of the work [/b]
                        [b]( آغاز هر كار مهمترين بخش آن است )[/b]

                        کامنت

                        • shamsololama

                          • 2010/02/15
                          • 940

                          #13
                          RE: دستور حرکت مکان نما از یک ستون به ستون دیگر

                          با درود فراوان

                          همانطور که می بینید کدهای خود را در زیر روال
                          Private Sub Worksheet_Calculate()
                          نوشته ایم و این به این معنی است که کد ما زمانی اجرا می شود که در صفحه Calculate صورت بگیرد وقتی در ستون تشویقی یک نوع تشویقی را وارد میکنیم در ستون A که برابر با ستون تشویقی قرار داده ایم نیز تغییر صورت میگیرد و برابر با ستون تشویقی می شود یعنی Calculate صورت گرفته در نتیجه کد اجرا شده و مکان نما را به ستون مورد نظر ما خواهد برد


                          در مورد سئوال دوم شما فرض کنیددر ستون تشویقی در سل D5 یک تشویقی را وارد می کنید یعنی در سطر پنجم حالا بعد از ورود تشویقی شما اینتر می زنید در نتیجه به یک سل پائین تر یعنی D6 می روید یعنی در سطر ششم و حالا نیاز داریم که مکان نما در ستون F و سطر پنج انتقال یابد یعنی سل F5 در صورتی که حالا در سطر ششم هستیم درنتیجه باید یک سطر بالاتر برویم و بعد دوخانه به سمت راست که برای بالا رفتن این یک سطری که گفته شدهد در آفست از 1- استفاده میشودتا مارایک سطر بالاتر یعنی سلی که به تازگی در آن تشویقی وارد کرده ایم ببرد و 2 در آفست هم برای اینکه ما را دو خانه به سمت راست ببرد.

                          Private Sub Worksheet_Calculate()
                          On Error Resume Next
                          این خط شرطی است که می گوید اگر در ستون چهار قرار داشتیم کد را اجرا کن
                          If Application.Selection.Column = 4 Then

                          این خط شرطی است که بعد از اینتر که یک خانه پائین آمده ایم میگوید یک سطر بالا (یعنی خانه ای که به تازگی در آن تشویقی وارد کرده ایم) آیا برابر با A هست ؟اگر بود کد را اجرا کن
                          If Selection.Offset(-1, 0) = "A" Then
                          این خط در صورتی که شر بالا برقرار بود یک سطر بالابرو (تا در خانه ای قرار بگیریم که به تازگی در آن تشویقی وارد کرده ایم)و 3 ستون به سمت راست
                          Selection.Offset(-1, 3).Select


                          و کدهای زیر هم به همین ترتیب

                          ElseIf Selection.Offset(-1, 0) = "B" Then
                          Selection.Offset(-1, 4).Select
                          ElseIf Selection.Offset(-1, 0) = "C" Then
                          Selection.Offset(-1, 5).Select

                          Else
                          MsgBox "نوع تشویقی را صحیح وارد کنید"
                          End If
                          End If
                          End Sub






                          کد:

                          Private Sub Worksheet_Calculate()
                          On Error Resume Next
                          If Application.Selection.Column = 4 Then
                          If Selection.Offset(-1, 0) = "A" Then
                          Selection.Offset(-1, 3).Select
                          ElseIf Selection.Offset(-1, 0) = "B" Then
                          Selection.Offset(-1, 4).Select
                          ElseIf Selection.Offset(-1, 0) = "C" Then
                          Selection.Offset(-1, 5).Select

                          Else
                          MsgBox "نوع تشویقی را صحیح وارد کنید"
                          End If
                          End If
                          End Sub


                          اگر مشکلی بود تا توضیح بیشتری بدهم
                          ---------------------------------------------------------------------------------------------------
                          بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم [size=x-small](دکتر شریعتی)[/size]
                          shamsololama@yahoo.com
                          09177733411

                          کامنت

                          • sh_amar

                            • 2010/10/06
                            • 168

                            #14
                            RE: دستور حرکت مکان نما از یک ستون به ستون دیگر

                            سلام برشما استاد ارجمند
                            درسته حالا نحوه كاركرد تابع offset را فهميدم و با تغييرات مورد نيازي كه در فايل خودم دادم به آنچه مي خواستم رسيدم بازم از سعه صدر شما در پاسخ دادن به سئوالاتم بيسار متشكرم
                            [b]The beginning , is the most important part of the work [/b]
                            [b]( آغاز هر كار مهمترين بخش آن است )[/b]

                            کامنت

                            چند لحظه..