PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : target چیست و چکار می کند؟



Radin
2012/05/29, 21:00
میشه در مورد targetتوضیح کاملی بدید چون تو هلپ هم چیزی ندیدم ؟با مثال های دیگه که هم اگر سراغ دارید بذارید تادر مورد کاری که تارگت انجام می ده هم من و هم سایر دوستان اطلاعی کسب کنند
در مورد این کد یک توضیحی بدید ممنون میشم

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
Static c As Range

If Not c Is Nothing Then
c.Interior.ColorIndex = xlColorIndexNone
End If

Target.Interior.ColorIndex = 6

Set c = Target


End Sub

s.cheraghi
2012/05/29, 22:54
با سلام
Target یک متغیر از نوع Object هست و نشان دهنده شئی هست که بر روی آن عملی انجام شده است و عمدتا از نوع Range هست و معمولا در رویداد Worksheet_change به عنوان سلول و یا محدوده ای از سلول ها که مقدار درون آنها تغییر داده می شود، می باشد.
زمینه های مورد استفاده target بیشتر از عرض بنده می باشد و امیدوارم که دوستان کامل تر بفرمایند

~M*E*H*D*I~
2012/05/30, 07:40
سلام
همانطور که دوست عزیزم فرمودن در مورد متغیر target یک ابجکت از نوع رنج هست که توضیحات دیگه ای بهش اضافه میکنم، اکسل این قابلیت رو داره که به صورت اتوماتیک یک ماکرو رو اجرا کنه این اتفاق زمانی قابل اجرا خواهد بود که مقدار یک سل تغییر پیدا کنه و ما enter رو بزنیم، از ورژن 97 به بعد مایکروسافت مبحث event هارو گسترش داد و در همین ورژن Worksheet_change به مجموعه event ها اضافه شد، worksheet_change رویه ای هست از مجموعه worksheet object ها و در ماژول می بایست به صورت private تعریف بشه شما وقتی وارد vba editor بشید و بر روی یکی از شیت ها دابل کلیک کنید صفحه ای باز میشه که بهش میگن module pane در بالای اون یک drop down list هlست که شامل دو گزینه general و worksheet هست که اگه worksheet رو انتخاب کنید یک پریویت ماژول به صورت اتوماتیک به ماژول پین اضافه میشه به شکل زیر

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub

مشاهده میکنید که یک متغیر پیش فرض به نام target تعریف شده که به سلی اشاره داره که قرار هست تغییری در اون ایجاد بشه و میدونید که سل ها از مجموعه range object هستند پس نوع متغیر هم به صورت پیش فرض رنج خواهد بود پس با این متغیر میشه به سلی اشاره کرد که تغییر میکنه به عنوان مثال کد زیر رو اجرا کنید تا ببینید چه اتفاقی میفته


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox "You select the " & Target.Address

End Sub

این توضیحات اگر کافی نبود بفرمایید بیشتر توضیح بدم

daghyad
2012/05/30, 23:35
این هم کد جهت امتحان کردن:

Private Sub Worksheet_Change(ByVal Target as Range)
Target.Font.ColorIndex = 5
End Sub

و این هم یک کد:


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 1 Then
ThisRow = Target.Row
If Target.Value > 100 Then
Range("B" & ThisRow).Interior.ColorIndex = 3
Else
Range("B" & ThisRow).Interior.ColorIndex = xlColorIndexNone
End If
End If
End Sub

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


Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim rng As Range

For Each rng In Target.Cells

If rng.HasFormula Then

ActiveSheet.Protect

Exit Sub

Else

ActiveSheet.Unprotect

End If

Next rng

End Sub