PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : [حل شده] Hide & UnHide



میثم مقدم نیا
2020/01/08, 16:48
سلام
من با کد زیر در This Workbook شیت هام را مخفی کردم

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim sht As Worksheet
For Each sht In ActiveWorkbook.Worksheets
visibles = Array("نخست")
If IsError(Application.Match(sht.Name, visibles, False)) Then
sht.Visible = xlSheetHidden
Else
sht.Visible = xlSheetVisible
End If
Next sht
End Sub

با کد زیر هم به شیت های دیگم دسترسی دارم

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Updated by Extendoffice 20180822
Dim xArray, xAValue As Variant
Dim xFNum As Long
Dim xStr, xStrRg, xStrSheetName As String
'xRgArray = Array("A1;1", "A2;11", "A3;21", "B1;2")
xRgArray = Array("A2;Sheet1", "A3;Sheet2", "A4;Sheet3", "A5;Sheet4", "A6;Sheet5", "A7;Sheet6", "A8;Sheet7", "A9;Sheet8", "A10;Sheet9", "A11;Sheet10")
On Error Resume Next

Sheet5.Visible = True

Sheets.Visible = xlSheetVisible
For xFNum = LBound(xRgArray) To UBound(xRgArray)
xStr = ""
xStr = xRgArray(xFNum)
xAValue = ""
xAValue = Split(xStr, ";")
xStrRg = ""
xStrRg = xAValue(0)
xStrSheetName = ""
xStrSheetName = xAValue(1)
If Not Intersect(Target, Range(xStrRg)) Is Nothing Then
Sheets(xStrSheetName).Activate
End If
Next
End Sub

یه مشکلی که من در اینجا دارم نمایش شیت های پنهان هست

با کد دستوری

Sheet5.Visible = True

رو هر یک از کلید هام کلیک میکنم به شیت پنج میرند
من 10 تا شیت بجز شیت اصلی دارم برای هر شیت هم یه سلول تعریف کردم که با دابل کلیک روی اون به شیت مورد نظر بره
فایل پیوست را ببنید و راهنماییم کنید

majid_mx4
2020/01/09, 12:11
با سلام

لطفا کد دسترسی را به شکل زیر تغییر دهید.


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Updated by Extendoffice 20180822
Dim xArray, xAValue As Variant
Dim xFNum As Long
Dim xStr, xStrRg, xStrSheetName As String
'xRgArray = Array("A1;1", "A2;11", "A3;21", "B1;2")
xRgArray = Array("A2;Sheet1", "A3;Sheet2", "A4;Sheet3", "A5;Sheet4", "A6;Sheet5", "A7;Sheet6", "A8;Sheet7", "A9;Sheet8", "A10;Sheet9", "A11;Sheet10")
On Error Resume Next



Sheets.Visible = xlSheetVisible
For xFNum = LBound(xRgArray) To UBound(xRgArray)
xStr = ""
xStr = xRgArray(xFNum)
xAValue = ""
xAValue = Split(xStr, ";")
xStrRg = ""
xStrRg = xAValue(0)
xStrSheetName = ""
xStrSheetName = xAValue(1)
If Not Intersect(Target, Range(xStrRg)) Is Nothing Then
Sheets(xStrSheetName).Visible = True
Sheets(xStrSheetName).Activate
End If
Next
End Sub
توضیح : در کد قبلی شما درخواست نمایش شیت 5 را در صدردستورات گذاشته بودید و به دستورات زیر اعلام نمایش شیت بر اساس خانه انتخابی و آرایه شیت ها ر ا نداده بودید لذا اضافه کردن دستور

Sheets(xStrSheetName).Visible = True

جهت استفاده از آرایه و نمایش شیت ها باید اضافه میشد.

پایدار باشید میر