PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : سوال درباره ی فعال کردن یک سلول خاص با کلیک بر دکمه های مربوط به سطر و ستون آن



behnaaam
2010/12/03, 16:23
با سلام به دوستان،
برای ساخت یک فرم خاص باید اعداد زیادی را در یک شیت اکسل وارد کنم،آیا روشی وجود دارد که بتوان با کلیک بر روی دکمه های بالا و گوشه سمت چپ شیت.مکان نما را به سلول محل تقاطع آنها انتقال بدهد؟
مثلا با کلیک روی سر ستون M و سطر 200 مکان نما به سلول M200 منتقل شود یا کادری ظاهر شود که مقدار ورودی برای سلول M200 را از من بپرسد؟
از پاسختون پیشاپیش ممنونم.

shamsololama
2010/12/04, 07:36
با درود فراوان

برای اینکه به سلولی خاص مثلا m200 برویم این قابلیت در خود اکسل وجود دارد و کافیست در کارد Namebox خانه کوچکی روبروی فرومول بار( که وقتی روی هر سل کلیک می کنیم نام سلول را نشان میدهد) با نوشتن نام هر سلول و زدن اینتر به سلول مورد نظر میرود مثلا اگر در آن بنویسید M200 و اینتر را بفشارید به سلول M200 خواهید رفت
و اینکه با نوشتن نام سلول کاری باز شود و مقدار ورودی را از شما بخواهد اگر منظور شما این است که برای نوشتن چیزی در یک سل کادری باز شود و هرچیزی که بنویسیم در سلول مورد نظر وارد شود بله اینکار شدنی است و کافیست که از دو اینپود باکس استفاده کنی که اولی مقداری را که می خوای وارد سلول کنی از شما بپرسد و دومی سلولی که مد نظر شماست را بپرسد و یا اینکه از Userform استفاده کنید

behnaaam
2010/12/04, 12:35
ممنونم از پاسختون.
ابگذارید سئوالم رو به شکل دیگه ای مطرح کنم.باید با کلیک روی سلول اول سطر و بعد اول ستون سلول مربوط یه آن سطر/ستون خاص انتخاب بشه.یعنی به فرض با کلیک روی سلول c1 و بعد a10 سلول c10 انتخاب بشه.
متشکرم.

shamsololama
2010/12/04, 14:28
با درود فراوان

چون نمی دانستم این را در چه برنامه ای و به چه منظوری نیاز دارید یک نمونه فایل را در ضمیمه گذاشته ام که امیدوارم همان چیزی باشد که مد نظر شماست

در این فایل وقتی اول ستون را انتخاب کنی و بعد سطر تقاطع این دو را یافته و انتخاب میکند


فایل ضمیمه:

[attachment=114]

behnaaam
2010/12/04, 15:01
یک دنیا ممنونم.شما هم کار منو راه انداختید هم باعث شدید بطور جدی بدنبال یادگیری VBA در اگسل بیفتم.
باز هم ممنون.
ای کاش درباره ی کدش هم توضیح اندکی میدادید.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("it65500") <> "" And Range("it65501") <> "" Then

Range("it65500") = ""
Range("it65501") = ""

Range("it65500") = Application.Selection.Column

ElseIf Range("it65500") = "" Then
Range("it65500") = Application.Selection.Column

ElseIf Range("it65500") <> "" Then
Range("it65501") = Application.Selection.Row

Cells(Range("it65501"), Range("it65500")).Select
Range("it65500") = ""
Range("it65501") = ""
Else
Cells(Range("it65501"), Range("it65500")).Select
Range("it65500") = ""
Range("it65501") = ""
End If
End Sub[hr]
یک دنیا ممنونم.شما هم کار منو راه انداختید هم باعث شدید بطور جدی بدنبال یادگیری VBA در اکسل بیفتم.
باز هم ممنون.
ای کاش درباره ی کدش هم توضیح اندکی میدادید.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("it65500") <> "" And Range("it65501") <> "" Then

Range("it65500") = ""
Range("it65501") = ""

Range("it65500") = Application.Selection.Column

ElseIf Range("it65500") = "" Then
Range("it65500") = Application.Selection.Column

ElseIf Range("it65500") <> "" Then
Range("it65501") = Application.Selection.Row

Cells(Range("it65501"), Range("it65500")).Select
Range("it65500") = ""
Range("it65501") = ""
Else
Cells(Range("it65501"), Range("it65500")).Select
Range("it65500") = ""
Range("it65501") = ""
End If
End Sub

shamsololama
2010/12/04, 15:51
با درود فراوان

در ین خط کدمان را در زیر روال SelectionChange صفحه مورد نظرمان قرار داده ایم
Private Sub Worksheet_SelectionChange(ByVal Target As Range)



در این خط دو سل را در نظر گرفته ایم که اگر خالی نبودند کد را اجرا کند
If Range("it65500") <> "" And Range("it65501") <> "" Then

در این دوخط در صورت برقرار بودن شرط بالا دوسل مورد نظر را خالی میکند
Range("it65500") = ""
Range("it65501") = ""

در این خط از دوسلی که انتخاب کرده ایم سل اول یعنی it65500 برابر با شماره ستون سلی که با موس انتخاب کرده ایم می شود در واقع یعنی شماره ستون ما در آن ذخیره می شود
Range("it65500") = Application.Selection.Column

در صورتی که شرط بالا برقرار نباشد شرط زیر را برسی میکند که اگر سل اول یعنی it65500 خالی بود کد بعد از آن را اجرا کند
ElseIf Range("it65500") = "" Then

در این خط در صورت برقرار بودن شرط بالا سل اول را برابر با شماره ستون قرار می دهد
Range("it65500") = Application.Selection.Column

و باز هم اگر شرط دوم هم برقرار نبود این شرط بررسی میکند که اگر سل اول خالی نبود یعنی شماره ستون در آن نوشته شده بود کد بعد از آن را اجرا کند
ElseIf Range("it65500") <> "" Then

در صورت برقرار بودن شرط بالا یعنی شرط سوم سل دوم را برابر با شماره ردیف قرار میدهد
Range("it65501") = Application.Selection.Row

در این خط چون هم شماره ستون که در سل اول نوشته شده و شماره ردیف که در سل دوم نوشته شده را داریم پس با کد Cells(Column,Row که در این کد قرار داده و آن را انتخاب می کند که در اصل هدف ماست
Cells(Range("it65501"), Range("it65500")).Select

در این دو خط دو سا مورد نظر را که با شماره ردیف و شماره ستون پرشده بود را خالی میکنیم تا آماده شود برای انتخاب بعد
Range("it65500") = ""
Range("it65501") = ""

در صورتی که هیچ کدام از شرط های بالا برقرار نباشد کد زیر اجرا میشود
Else
در این خط سل تقاطع ستون و ردیف را انتخاب می کند
Cells(Range("it65501"), Range("it65500")).Select
دوسل را خالی میکند
Range("it65500") = ""
Range("it65501") = ""
پایان شرط ها
End If
پایان محدوده کد
End Sub