وقتی وارد محیط VBA میشی اگر بر روی thisworkbook دابل کلیک کنی کد زیر رو میبینی
این کد باعث میشه کلیه شیت ها به جز welcome با بسته شدن فایل هاید بشن پس اگر شیت های دیگه ای ایجاد کنی و اسامی اونهارو در select case استثناء کنی اون شیت ها مخفی نخواهند شد.
کد PHP:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim sheet As Worksheet
Application.DisplayAlerts = False
For Each sheet In Worksheets
Select Case sheet.Name
Case "Welcome"
Case Else
Sheets(sheet.Name).Visible = xlVeryHidden
End Select
Next sheet
If Me.Saved = False Then Me.Save
ActiveWorkbook.Close
End Sub
برای سوال بعد اگر در محیط vba فرم userform1 رو باز کنی و بر روی کلید login دابل کلیک کنی کد های زیر رو مشاهده می کنی
کد PHP:
Private Sub CommandButton1_Click()
Dim PassWord As String
Dim user As String
user = ComboBox1.Value
PassWord = TextBox1.Value
If user = "" Or PassWord = "" Then
MsgBox "Enter name and password"
Exit Sub
End If
If PassWord = WorksheetFunction.VLookup(user, Range("List"), 2, 0) Then
Sheets(user).Visible = xlSheetVisible
MsgBox "Password Accepted"
UserForm1.Hide
ElseIf counter <= 3 Then
MsgBox "Try Again"
counter = counter + 1
TextBox1.Value = ""
Exit Sub
Else
MsgBox "Password Not Accepted, Workbook will close"
Unload Me
ThisWorkbook.Close
End If
ComboBox1.Value = ""
TextBox1.Value = ""
End Sub
این دو خط در کد بالا ابتدا صحت پسورد رو چک میکنه و در صورت صحیح بودن پسورد شیت مورد نظر رو unhide میکنه
اگر قرار باشه هر یوزر شیت های بیشتری داشته باشه چیزی که به ذهنم میرسه در حال حاضر اینه که هر یوزر یک شیت اصلی داشته باشه که با گرفتن پسورد اون شیت باز بشه و در هر شیت یک کلید دیگه تعبیه بشه برای باز کردن یک فرم ثانویه به نحوی که با گرفتن پسورد ثانویه شیت های بعدی رو براش باز کنهکد PHP:
If PassWord = WorksheetFunction.VLookup(user, Range("List"), 2, 0) Then
Sheets(user).Visible = xlSheetVisible
راه حل دیگه ای که به ذهنم میرسه اینه که شیت های هر کاربر به صورتی نامگذاری بشه که حاوی کد خاصی باشه به نحوی که با نام کاربری مرتبط باشه و حین چک کردن پسورد بشه اون کد رو از نام جدا کرد و با نام کاربری مقایسه کرد و بعد شیت های مربوطه رو باز کرد البته این راه رو باید تست کرد و شاید کدنویسی پیچیده ای داشته باشه
در ارتباط با سوال یک من این کار ا کردم ولی نشد میشه یک نمونه انجام بدید
و در مورد سوال دوم هم درست متوجه نشدم مثلا برای مورد اول میشه یک نمون مثال بزنید
با تشکر واقعا شرمندم
به من گفتند اینجا من جواب سوالم رو میگیرم ولی کسی جوابی نداده ؟؟؟؟
درود
تو پکیج یک فایل مقدماتی آموزشی VAB هست که برای کسانی که هیچ آشنایی با VBA ندارند راهگشاست اون رو مطالعه کنید ابتدا.
در خصوص سوال
وقتی یک فایل اکسل رو باز کنید با فشردن Alt+f11 وارد محیط VBA خواهید شد
با فرض اینکه بخوایم برای یک فرم برنامه نویسی کنیم
یک فرم شامل اجزای مختلفی میشه خود فرم اصلی ، باتن ها ،کمبو باکس و....
وقتی بخوایم برای هر کدوم از این اجزا برنامه بنویسیم روش دابل کلیک میکنیم فرضا بر روی کلید login دابل کلیک کنیم وارد محیط برنامه نویسی میشیم و هر جزء یک ساب روتین (sub end sub ) با رویداد پیشفرض خواهد داشت
کدمون رو بین sub و end sub مینویسیم یا کپی پیست میکنیمکد PHP:
Private Sub CommandButton1_Click()
end sub
امیدوارم سوال پاسخ داده شده باشه
ویرایش توسط mokaram : 2014/12/04 در ساعت 10:02
در حال حاضر 2 کاربر در حال مشاهده این موضوع است. (0 کاربران و 2 مهمان ها)
علاقه مندی ها (Bookmarks)