با درود فراوان
حرکت مکان نما بر اساس نوع تشویقی A , B ,C را در فایل ضمیمه قرار داده ایم می توانید ببینید و اگر در کدنویسی آن مشکل و یا سئوالی داشتید بپرسید
فایل نمونه
[attachment=106]
با درود فراوان
حرکت مکان نما بر اساس نوع تشویقی A , B ,C را در فایل ضمیمه قرار داده ایم می توانید ببینید و اگر در کدنویسی آن مشکل و یا سئوالی داشتید بپرسید
فایل نمونه
[attachment=106]
سلام استاد گرامي
فايل ضميمه شما را ديدم يكي و دو سئوال برايم پيش آمده اول اينكه ستون كمكي (ستون A ) را براي چي درست كرديد ؟
دوم اينكه شما فرموديد در تابع offset عدد اول نشان دهنده تعداد رديف هاي جابه جايي نسبت به سل انتخاب شده ماست و علامت منفي آن حركت به بالا را نشان ميدهد حال آنكه در فايل شما پس از انتخاب ستون 4 (ستون تشويقي ) ما نياز داريم كه يك رديف به پايين بياييم پس چرا شما از 1- در تابع Offset استفاده كرديد ؟
ممنون از كمك شما
با درود فراوان
همانطور که می بینید کدهای خود را در زیر روال
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
اگر مشکلی بود تا توضیح بیشتری بدهم
سلام برشما استاد ارجمند
درسته حالا نحوه كاركرد تابع offset را فهميدم و با تغييرات مورد نيازي كه در فايل خودم دادم به آنچه مي خواستم رسيدم بازم از سعه صدر شما در پاسخ دادن به سئوالاتم بيسار متشكرم
در حال حاضر 2 کاربر در حال مشاهده این موضوع است. (0 کاربران و 2 مهمان ها)
علاقه مندی ها (Bookmarks)