جواب شما در این تاپیک هست
فیلتر ستونهای شیت قفل شده
ممنون از پیگیری سریع تون خیلی خیلی متشکرم ولی این مورد به کارم نمیاد . دقیقا من می خوام همه سلول ها ، چه پروتکت شده چه نشده برای همه قابل فیلتر کردن و سورت کردن باشد. چون درسته دسترسی برای تغییرات برای بعضی از کاربران بسته و محدود است ولی آنها لازم دارند در صورت نیاز اطلاعات موجود رو فیلتر کنند . آیا در قسمتی که من تصویرشو قرار دادم نمی توان چنین دستوری قرار داد ؟ اون مواردی که خود VBA نشون میده مانند Allowsorting یا Allowfiltering برای چه منظور اونجا قرار دارند .
من تلاش کردم اونارو استفاده کنم به این تصویر توجه کنید . مشکل کجاست اصلا این قسمت قابل کار است ؟
اینجور که در اینترنت هم جستجو کردم می توان قسمت پروتکت کردن رو انجام داد با این فرض که فیلتر قابل اجرا باشد . ولی چگونه نمی دونم
ویرایش توسط sabertb : 2015/07/27 در ساعت 16:29
با استفاده از کد protect تا اونجایی که بنده میدونم شیت قفل شده رو نمیشه فیلتر کرد چون سطر ها بهم مربوطه تنها روش که به ذهنم می رسه این هست که برای هر ستون شما یک command button به شکلی که گفتم ایجاد کنید به طوری که هر کدام مربوط به یک ستون باشه .
البته ممکنه دوستان بتونن راه حل های بهتری رو پیشنهاد بدن . موفق باشید.
خانه اکسل - http://********************
دستتون درد نکنه فوقالعاده کمکم کردید . من تونستم اشکال اون کد نویسی رو حل کنم ولی همینطور که شما گفتید فعلا که کاری از پیش نبردم .
هنوز فیلترینگش غیر فعاله در حالت پروتکت !
فایل پیوست 7894
دوستان یه کمک برسونید 95% کار رو ، استاد "Dolfin" انجام دادن فقط مونده اون نفرات با دسترسی محدود بتونن فیلتر رو انجام بدند بدون command button (علت اصرار من هم اینه که افرادی که قراره استفاده کنند از این فایل اصلا قبول نمیکنند که روش کارشون رو تغییر بدند .یه command button اضافه بشه میگن ما نمی تونیم و از این حرفا ...
ویرایش توسط sabertb : 2015/07/27 در ساعت 16:40
بلا خره موفق شدم این کارو انجام بدم با کمک استاد عزیز
و در thisworkbookکد PHP:
Option Explicit
Declare PtrSafe Function WNetGetUser Lib "mpr.dll" _
Alias "WNetGetUserA" (ByVal lpName As String, _
ByVal lpUserName As String, lpnLength As Long) As Long
Const NoError = 0 'The Function call was successful
Public Function GetUserName() As String
' Buffer size for the return string.
Const lpnLength As Integer = 255
' Get return buffer space.
Dim status As Integer
' For getting user information.
Dim lpName, lpUserName As String
' Assign the buffer size constant to lpUserName.
lpUserName = Space$(lpnLength + 1)
' Get the log-on name of the person using product.
status = WNetGetUser(lpName, lpUserName, lpnLength)
' See whether error occurred.
If status = NoError Then
' This line removes the null character. Strings in C are null-
' terminated. Strings in Visual Basic are not null-terminated.
' The null character must be removed from the C strings to be used
' cleanly in Visual Basic.
lpUserName = Left$(lpUserName, InStr(lpUserName, Chr(0)) - 1)
Else
' An error occurred.
GetUserName = "Unable to get the name."
GoTo lbl_Exit
End If
' Display the name of the person logged on to the machine.
GetUserName = lpUserName
lbl_Exit:
Exit Function
End Function
یه سوال جدید دارم حالا اگر تعداد صفحات زیاد بود چه کار کنیم نمیشه کاری کرد که کلا همه sheet ها این قالب برایشان حکم فرما باشد ؟کد PHP:
Private Sub Workbook_Open()
If GetUserName = "s.tabibi" Or GetUserName = "a.alijanzadeh" Or GetUserName = "a.namdari" Then
Sheet2.Unprotect ("132025")
Sheet3.Unprotect ("132025")
Else
Sheet2.Protect Contents:=True, Scenarios:=True, Password:=132025, AllowSorting:=True, AllowFiltering:=True
Sheet3.Protect Contents:=True, Scenarios:=True, Password:=132025, AllowSorting:=True, AllowFiltering:=True
End If
End Sub
سلام خسته نباشید ممنونم از اطلاعات مفید وبارزشتون
منم هم نمونه همین فایل رو بااستفاده از آموزشای شما بزرگوارن ساختم اما میخوام هر یوزر بعد از وارد شدن به شیت درنظر گرفته شده براش امکان تغییر پسورد خودشو داشته باشه یعنی بعد از ورود اولیه یه فرم نمایش داده بشه که ازش بخواد درصورت نیاز پسوردش رو تغییر بده
اگر کدش رو بهم آموزش بدین ممنون میشم
در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)
علاقه مندی ها (Bookmarks)