نمایش شیت های پنهان شده (unhide) در اکسل
فرض کنید که یک شیت رو باز میکنیم و بعد از بررسی، متوجه میشیم که بعضی از فرمول ها به یک شیت دیگه ارجاع داده شدن. در واقع دارن از یک شیت دیگه تغذیه میشن. ولی وقتی به تب شیت ها نگاه میکنیم، اثری از شیت مرجع نیست! اگر بخوایم یک شیت با همون اسم بسازیم، اکسل به ما پیام میده که شیتی با همین نام از قبل ساخته شده. این ها همه به این معنی است که شیت مورد نظر ما وجود داره منتها مخفی (hide) شده. چجوری میتونیم شیت های مخفی شده رو ببینیم؟ با چه روشی نمایش شیت های پنهان ممکن هست؟ خب مشخصا باید اونها رو آشکار (unhide) کنیم. این کار میتونه به صورت دستی با دستور unhide در اکسل یا بطور خودکار با VBA انجام بشه.
چگونگی آشکار کردن شیت ها در اکسل
اگر بخوایم فقط یک یا دو شیت مخفی شده رو ببینیم، طبق مراحل زیر پیش میریم (قبلا جزئیات بیشتری در مورد کار با Sheet Tab در مقاله کار با Sheet Tabs در اکسل گفتیم) :
- در محیط ورکبوک روی یکی از تب های شیت کلیک راست میکنیم و گزینه Unhide رو انتخاب میکنیم.
- در پنجره باز شده شیت هایی که میخوایم نمایش داده بشن انتخاب میکنیم و روی OK کلیک میکنیم.
شکل ۱ – نمایش شیت های پنهان شده
راه دیگه برای این کار استفاده از گزینه Unhide در قسمت نوار ابزار هست.
- در اکسل ۲۰۰۳ و قبل تر از اون، در منو Format، و از قسمت Sheet روی گزینه Unhide کلیک میکنیم.
- در نسخه های ۲۰۱۶، ۲۰۱۳، ۲۰۱۰ و ۲۰۰۷ اکسل، از تب Home به گروه Cells رفته و روی گزینه Format کلیک میکنیم. از منو باز شده، در قسمت Visibility روی گزینه Hide & Unhide اشاره میکنیم و از منو باز شده گزینه Unhide Sheets رو انتخاب میکنیم.
شکل ۲- نمایش شیت های پنهان شده از تب Home
گزینه Unhide اکسل فقط اجازه آشکار کردن یک شیت در آن واحد رو به ما میده. برای آشکار کردن چندین شیت باید کارهای بالا رو برای هرکدوم تکرار کنیم. برای اینکه کار تکراری انجام ندیم میتونیم از ماکروهای زیر برای این کار استفاده کنیم. البته در ورژن ۲۰۲۱ این موضوع برطرف شده و با یکبار، میتونیم بیش از یک شیت رو Unhide کنیم.
چگونگی آشکار کردن شیت ها با استفاده از VBA در اکسل
در مواقعی ما میخوایم چندین شیت رو آشکار کنیم، ولی انجام این کار بصورت دستی برای هر کدوم بصورت جداگانه، ممکنه کمی زمان بر باشه. خوشبختانه میتونیم این کار رو با یکی از ماکروهای زیر بصورت خودکار انجام بدیم.
چگونگی آشکار سازی تمام شیت ها در اکسل
این ماکرو تمام شیت ها رو در یک ورکبوک، بدون هیچ پیام اضافه ای، آشکار میکنه.
۱ ۲ ۳ ۴ ۵ ۶ |
Sub Unhide_All_Sheets() Dim wks as Worksheet For Each wks In ActiveWorkbook.Worksheets wks.Visible = xlSheetVisible Next wks End Sub |
نمایش دادن تمام شیت های مخفی و تعدادشون
این ماکرو هم مثل قبلی تمام شیت ها رو آشکار میکنه با این تفاوت که یک پیام حاوی تعداد شیت های آشکار شده به ما نشون میده.
شکل ۳- نمایش شیت های پنهان شده با استفاده از VBA
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ |
Sub Unhide_All_Sheets_Count() Dim wks As Worksheet Dim count As Integer count = ۰ For Each wks In ActiveWorkbook.Worksheets If wks.Visible <> xlSheetVisible Then wks.Visible = xlSheetVisible count = count + ۱ End If Next wks If count > ۰ Then MsgBox count & " worksheets have been unhidden.", vbOKOnly, "Unhiding worksheets" Else MsgBox "No hidden worksheets have been found.", vbOKOnly, "Unhiding worksheets" End If End Sub |
آشکار کردن چندین شیت بصورت انتخابی
اگر بخوایم که همه شیت ها آشکار نشن و فقط چند شیت رو از بینشون انتخاب کنیم، ماکرو زیر مورد استفاده قرار میگیره. با اجرای این ماکرو، پیامی ظاهر میشه و میپرسه که مثلا شیت با نامه Sales_Report نمایش داده بشه یا نه؟. با زدن Yes نمایش داده میشه و با زدن No. نمایش داده نمیشه. همینطور این پیام برای همه شیت های پنهان شده نمایش داده میشه.
شکل ۴- نمایش برخی شیت های پنهان شده
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ |
Sub Unhide_Selected_Sheets() Dim wks As Worksheet Dim MsgResult As VbMsgBoxResult For Each wks In ActiveWorkbook.Worksheets If wks.Visible = xlSheetHidden Then MsgResult = MsgBox("Unhide sheet " & wks.Name & "?", vbYesNo, "Unhiding worksheets") If MsgResult = vbYes Then wks.Visible = xlSheetVisible End If Next End Sub |
آشکار کردن شیت هایی با یک کلمه خاص در اسم اونها
بعضی اوقات ممکنه بخوایم شیت هایی با اسم هایی خاص نمایش داده بشن. در این موارد باید یک IF به ماکرو، برای چک کردن اسم شیت ها اضافه کنیم.
در این مثال، ما شیت هایی که در اسمشون کلمه report باشه رو آشکار میکنیم. بنابراین ماکرو، شیت هایی مثل report, report 1, July report رو نشون میده.
در موارد دیگه، اسم مورد نظرمون رو بجای کلمه “report” وارد میکنیم.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ |
Sub Unhide_Sheets_Contain() Dim wks As Worksheet Dim count As Integer count = ۰ For Each wks In ActiveWorkbook.Worksheets If (wks.Visible <> xlSheetVisible) And (InStr(wks.Name, "report") > ۰) Then wks.Visible = xlSheetVisible count = count + ۱ End If Next wks If count > ۰ Then MsgBox count & " worksheets have been unhidden.", vbOKOnly, "Unhiding worksheets" Else MsgBox "No hidden worksheets with the specified name have been found.", vbOKOnly, "Unhiding worksheets" End If End Sub |
چگونگی استفاده از ماکرو ها برای آشکار کردن شیت ها در اکسل
برای استفاده از ماکرو ها در شیت خودمون، میتونیم کد اونها رو کپی/پیست کنیم توی Visual Basic Editor یا ورکبوک های حاوی ماکرو رو دانلود و اجرا کنیم.
چگونگی وارد کردن ماکرو ها در ورکبوک
برای وارد کردن ماکرو ها طبق مراحل زیر پیش میریم:
- ورکبوک حاوی شیت های مخفی شده رو باز میکنیم.
- از کلید های ترکیبی Alt + F11 برای باز کردن Visual Basic Editor استفاده میکنیم.
- در سمت چپ، روی گزینه This Workbook کلیک راست میکنیم و از منو Insert > Module رو انتخاب میکنیم.
- کد رو در پنجره Module پیست میکنیم.
- F5 رو میزنیم تا ماکرو اجرا بشه.
دانلود ورکبوک حاوی ماکرو
همچنین میتونیم نمونه ورکبوک حاوی تمام ماکرو هایی که دربارشون صحبت کردیم رو دانلود کنیم.
برای اجرای ماکرو ها در اکسل طبق مراحل زیر پیش میریم:
- ورکبوک دانلود شده رو باز کرده و ماکرو هارو فعال میکنیم.
- ورکبوک خودمون که میخوایم شیت هاش رو آشکار کنیم رو باز میکنیم.
- در ورکبوک خودمون، کلید های ترکیبی Alt + F8 رو میزنیم، ماکرو مورد نظر رو انتخاب کرده و روی Run کلیک میکنیم.
برای مثال، برای آشکار کردن تمام شیت ها و نشون دادن تعداد اونها، ماکرو زیر رو اجرا میکنیم:
شکل ۵- اجرای ماکروی مورد نظر برای نمایش شیت های پنهان شده
چگونگی نمایش شیت های مخفی شده با ساختن یک custom view در اکسل
غیر از Unhide کردن یک به یک شیت ها و اجرای ماکروه ای مختلف، میشه از ابزار Custom View برای نمایش شیت های پنهان شده استفاده کرد. اگر با این ابزار اکسل آشنا نیستید، مقاله مربوط به نماها رو مطالعه کنید. در واقع میتونیم این ابزار رو به عنوان یک عکس فوری از تنظیمات ورکبوک خودمون در نظر بگیریم که هر لحظه میتونیم اون رو با یک کلیک موس فعال کنیم. نکته مهم این که بهتره ابتدای کار و زمانی که هنوز هیچ شیتی مخفی نشده، از این روش استفاده بشه.
بنابراین میخوایم طبق مراحل زیر یک custom view با نام Show All Sheets بسازیم:
- مطمئن میشیم که همه شیت ها در ورکبوک ما قابل مشاهده هستن.
- از تب View و گروه Workbook Views، گزینه Custom Views رو انتخاب میکنیم.
شکل ۶- نمایش شیت های پنهان شده از طریق Custom View
- در پنجره باز شده، روی Add کلیک میکنیم.
شکل ۷- ذخیره نمای مورد نظر
- در پنجره باز شده به اسم Add ، اسم نمای مورد نظر رو وارد میکنیم و روی OK کلیک میکنیم.
شکل ۸- ذخیره نماهای مختلف با استفاده از Custom view
حالا میتونیم هر تعداد شیت که بخوایم مخفی کنیم. هروقت نیاز بود تا همه شیت های پنهان شده نمایش داده بشن، میتونیم روی custom view کلیک کنیم، Show All Sheets رو انتخاب و روی Show کلیک کنیم.
شکل ۹- نمایش شیت های پنهان شده با استفاده از Custom View
چگونه چک کنیم که یک ورکبوک حاوی شیت مخفی است؟
سریع ترین راه برای این کار اینه که روی تب شیت ها کلیک راست کرده و ببینیم آیا دستور Unhide فعاله یا نه. اگر فعال بود، روش کلیک میکنیم تا ببینیم کدوم شیت ها مخفی شدن. اگر غیرفعال بود، ورکبوک ما هیچ شیت مخفی شده ای نداره.
شکل ۱۰ – غیر فعال بودن گزینه Unhide
مشکلات و راه حل های نمایش شیت های پنهان در اکسل
- ورکبوک محافظت شده است.
اگر ساختار ورکبوک ما محافظت (قفل) شده باشه امکان مخفی یا آشکار کردن شیت ها وجود نداره. برای چک کردن این موضوع به تب Review رفته و از گروه Changes، به دکمه Protected Workbook نگاهی میندازیم. اگر دکمه به رنگ سبز هایلایت شده بود، ورکبوک محافظت شده است. برای برگردوندن ورکبوک به حالت عادی، روی دکمه Protected Workbook کلیک کرده و در صورت نیاز کلمه عبور رو وارد میکنیم تا ورکبوک ما به حالت عادی برگرده.
- شیت های خیلی مخفی شدن.
اگر شیت های ما توسط کد VBA مخفی شده باشن، تبدیل به شیت های veryhidden میشن که با دستور Unhide آشکار نمیشن. برای این کار باید اونهارو از طریق Visual Basic Editor، از نوع xlSheetVeryHidden به xlSheetVisible تبدیل کرد.
دانلود فایل این آموزش
برای دانلود فایل این آموزش روی دکمه زیر کلیک کنید.
سلام
آیا ممکنه در ساخت فرم لاگین ُبا ورود کاربری و پسورد بجای مشاهده شیت ها وارد فرم ورد اطلاعات شد؟
اگر امکانش هست لطف کد مربوطه را بفرمایید.ممنون
درود
بله امکانش هست، کافیه در ساختار شرطی بررسی نام کاربری و رمز ورود زمانیکه اطلاعات درست وارد شد از Userform#.show استفاده کنید بلافاصله بعد از ورود اطلاعات کاربری فرم مورد نظر نمایش داده شود و فرم جاری را Close کنید. همچنین میتونید از رویداد Query_Close امکان بستن فرم را از کاربر بگیرید که فقط در فرم کار را انجام دهد و فرم را نبندد.
سلام سوالی دارم وممنون میشم راهنمایی بفرمایید
فرض بفرمایید یک ورک بوک دارم که در ان پنجاه شیت متوای دارم، حال اگر بخواهم فرمولی بنویسم که در یک شیت ، مثلا شیت پنجاه و یک و سلول a1 الی a50 ، سلول d3 ی ، پنجاه شیت قبلی را نمایش بدهد، آیا امکان پذیر است؟؟؟
سلام
بله این مقاله بخونید
عینا همین مثال اورده شده
https://excelpedia.net/address-function/
سلام
وقتتون بخیر
ممنونم از مطالب خوبتون
میخواستم بدونم اگه بخوام شیت هامو با اعداد نامگذاری کنم و هر دفعه شیتی برام unhide بشه که بعد از عددِ آخر هست، باید چطوری برنامه رو تغییر بدم؟
مثلا نامگذاری شیت هام به این شکل هست: ۱-۱ و ۱-۲ این دو شیت میشه برگه مالی اولم و دوباره ۲-۱ و ۲-۲ برگه مالی دومم و به همین ترتیب؛ و می خوام هر دفعه در انتهای این دو شیت با زدن یک دکمه، برگه مالی بعدیم باز بشه و unhide بشه.
درود بر شما
نیاز به کدنویسی دارید
ماکرو ضبط کنید تا با کد مربوط به hide / unhide اشنا بشید
بعد هم با if ترکیب کنید که هر موقع شرط مورد نظرتون برقرار شد این مراحل انجام بشه
سلام روزتون بخیر
من موقعی که فایل اکسل جدید از ایمیل دریافت میکنم اگر موقعه باز کردن اکسل جدید در سیستم اکسل های دیگه ای باز باشه کلیه اکسلهام هنگ می کنه و باید همون لحظه همه رو ببندم احتمالا بدلیل متفاوت بودن ورژن اکسلها باشه این دفه که این کار رو کردم کلیه شیتهای اکسل روی سیستمم غیب شدند البته کلیه موارد روی شیتها قبلا سیو شده بودند در حد یک عدد جدید سیو نشده بود و نتونستم نوار طول بار و شیت های قبلی روبیارم چیکار کنم که این شیتها برگردند به هیچ وجه شیتها پاک نشدند فقط نوار طول بار شیتها نیست نه از افقی نه از عمودی لطفا راهنماییم کنید ممنون میشم چون همه فایلهای حساب و کتابه
درود
اگر منظورتون نمایش sheet tab هست از مسیر زیر برید و تیک گزینه show sheet tab رو بزنید
Excel Options/ advanced/ Display Option for this workbook
با سلام
می خوام توسط کمبوباکس به شیت مورد انتخاب حرکت کنم و سایر شیتها مخفی باشند
دستور vba اون چطور میشه ؟ لطفا راهنمایی بفرمایید
سلام
برای انجام این کار روش های مختلفی وجود داره که بستگی به نوع کمبوباکس و اینکه این روی یوزرفرم هست یا درون اکسل داره، یک روشش با فرض اینکه از کمبوباکس Form Control استفاده شده باشه به صورت زیر است:
اول شیت های مورد نظر رو به ترتیب قرارگیری در فایلتون وارد کمبوباکس کنید.
در رویداد Change شیتی که کمبوباکس اونجا قرار داره باید دستور زیر رو بنویسید (فرض میکینم که آدرس سلول Cell Link کمبوباکس A1 هست):
عالی عالی عالی
بسیار متشکر
سلام. واقعا دستتون درد نکنه. یه شیت مهم رو گم کرده بودم پیداش کردم. خدا خیرتون بده. موفق باشین
بنام خدا
سلام
راهنمایی های شما بسیار عالی بود، با اینکه آنلاین با پشتیبانی مایکروسافت مکاتبه کردم. نتوانست مشکل مرا حل کند. ولی با اجرای راهنمایی های شما مشکل من حل شد.
فایل را بمنظور ترمیم برای پشتیبان ارسال کردم. در یکی از شیت ها تعداد زیادی پسورد دارم. آیا نیاز هست آنها را تغییر دهم؟
با سلام و خسته نباشید
مرسی از راهنمایی های بسیار مفیدتون
میخوام یک جدول در اکسل با زدن یک چک باکس نمایش داده بشه و با نزدنش مخفی بشه
مثلا چند تا چک باکس دااریم با چند تا جدول که در صورت تیک خوردن هر چک باکس جدول مورد نظر آن نمایش داده بشه
آیا این امکان جود داره؟و اگه داره با چه دستوری؟
سلام
میتونید با فرمول نویسی در Conditional Formatting این کار رو انجام بدید.
به این صورت که فرمت سلول های هر جدول رو مشروط به مقداری که Cell Link هر چک باکس داره بشه.