ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
31 visibility
موضوع: آفیس توسط:

کلی یک ورک بوک دارد که شامل صدها کاربرگ است. هر کاربرگ نشان دهنده یک پروژه فردی برای شرکت او است. سلول C4 هر کاربرگ شامل شماره پروژه برای آن پروژه خاص است. یافتن پروژه های فردی از بین صدها پروژه در ورک بوک در بهترین حالت دست و پا گیر است. او از خود می پرسد که آیا می توان ماکرویی ایجاد کرد که به کاربر اجازه دهد شماره کار را وارد کند، برگه ای را که آن شماره کار را دارد در سلول C4 پیدا کند و سپس آن کاربرگ را نمایش دهد.

قبل از پرداختن به نحوه انجام این کار در یک ماکرو، باید بدانید که ممکن است بتوانید پروژه مورد نظر را با استفاده از ابزارهای بومی Excels پیدا کنید. تنها کاری که باید انجام دهید این است که این مراحل را دنبال کنید:

image

شکل 1. تب گسترش یافته Find در کادر محاوره ای Find and Replace.

  1. Ctrl+F را فشار دهید. اکسل برگه Find در کادر محاوره ای Find and Replace را نمایش می دهد.
  2. روی دکمه Options کلیک کنید تا کادر محاوره ای باز شود. (شکل 1 را ببینید.)
  3. با استفاده از لیست کشویی Within، Workbook را انتخاب کنید.
  4. اگر سلول C4 در هر کاربرگ فقط شامل شماره پروژه است، تیک Match Entire Cell Contents را انتخاب کنید.
  5. روی Find Next کلیک کنید.

خودشه؛ شما باید به اولین نمونه سلولی که شامل شماره پروژه شماست برده شوید. اگر ورک بوک شما حاوی اعداد پروژه در چندین سلول است (علاوه بر سلول C4)، استفاده از ابزار Find می تواند کمی خسته کننده باشد. باید روی Find Next کلیک کنید تا زمانی که کاربرگ صحیح را پیدا کنید. در چنین شرایطی، یک ماکرو ممکن است بهترین راه حل باشد، زیرا به شما اجازه می دهد به طور خاص به سلول C4 نگاه کنید و هر آنچه در هر سلول دیگری است را نادیده بگیرید.

ماکرو زیر از کاربر می خواهد که شماره پروژه را وارد کند. سپس هر کاربرگ را در ورک بوک برای اولین کاربرگ جستجو می کند که سلول C4 در آن شماره پروژه را شامل می شود. اگر پیدا شد، ماکرو کاربرگ را نمایش می دهد و سلول را فعال می کند. اگر پیدا نشد، پیامی نمایش داده می شود که چنین چیزی را نشان می دهد.

Sub FindProject1()
    Dim wks As Worksheet
    Dim sCell As String
    Dim sProj As String

    sCell = "C4" cell with Project number
    sProj = InputBox("What Project are you looking for?")
    For Each wks In Worksheets
        If wks.Range(sCell) = sProj Then
            wks.Activate
            wks.Range(sCell).Activate
            MsgBox ("Project " & sProj & " is in:" & vbCrLf & wks.Name)
            Exit Sub
        End If
    Next wks
    MsgBox ("Project is not found")
End Sub

دو مشکل احتمالی برای این ماکرو وجود دارد. اول، اگر شماره پروژه شما در واقع یک عدد است، ماکرو ممکن است آن را پیدا نکند زیرا به دنبال رشته های متنی می گردد. دوم، اگر چندین کاربرگ وجود داشته باشد که از یک شماره پروژه استفاده می کند، هرگز آن را نمی دانید زیرا ماکرو همیشه در کاربرگ با اولین شماره پروژه منطبق در سلول C4 متوقف می شود. با ایجاد چند تغییر در ماکرو می توانید بر هر دوی این مشکلات غلبه کنید.

Sub FindProject2()
    Dim wks As Worksheet
    Dim sCell As String
    Dim sProj As String
    Dim vSheets As New Collection
    Dim sTemp As String

    sCell = "C4" cell with Project number
    sProj = InputBox("What Project are you looking for?")
    For Each wks In Worksheets
        If wks.Range(sCell).Value = sProj Or _
          wks.Range(sCell).Value = Val(sProj) Or _
          wks.Range(sCell).Text = sProj Then
            vSheets.Add wks
        End If
    Next wks

    Select Case vSheets.Count
        Case 0
            sTemp = "Project " & sProj & " was not found "
            sTemp = sTemp & "in this workbook."
            MsgBox sTemp
        Case 1
            wks.Activate
            wks.Range(sCell).Activate
        Case Else
            sTemp = "Project " & sProj & " was found on more "
            sTemp = sTemp & "than one sheet:" & vbCrLf
            For Each wks In vSheets
                sTemp = sTemp & wks.Name & vbCrLf
            Next wks
            MsgBox sTemp
    End Select
End Sub

با این نسخه از ماکرو، کاربرگ پروژه تنها در صورتی نمایش داده می شود که شماره پروژه در بین همه کاربرگ ها منحصر به فرد باشد. اگر چندین نمونه وجود داشته باشد که شماره پروژه یکسان است، نام آن کاربرگ ها به شما اطلاع داده می شود، اما هیچ کاربرگ انتخاب نشده است.

در صورت تمایل می توانید با تغییر نام همه کاربرگ ها به شماره پروژه، ماکرو را بسیار ساده تر کنید. این همچنین مزیت دیگری را به همراه خواهد داشت که تضمین می کند هیچ پروژه ای از دو کاربرگ استفاده نمی کند. (همه نام کاربرگ ها باید منحصر به فرد باشند، بنابراین اگر هر کاربرگ از شماره پروژه به عنوان نام استفاده می کند، می توانید فقط یک کاربرگ برای هر شماره پروژه داشته باشید.) اگر این رویکرد را دارید، می توانید از یک ماکرو مشابه زیر برای پیدا کردن و پرش استفاده کنید. به کاربرگ مورد نظر:

Sub FindProject3()
    On Error GoTo ErrorHandler
    Sheets(InputBox("Enter Project Number:")).Activate
    Exit Sub
ErrorHandler: MsgBox "No such Project"
End Sub
اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 34 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 29 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 24 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 24 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 35 visibility

23.7k سوال

9.0k پاسخ

614 دیدگاه

11.2k کاربر

156 نفر آنلاین
1 عضو و 155 مهمان در سایت حاضرند
اعضای حاضر در سایت
بازدید امروز: 11458
بازدید دیروز: 17853
بازدید کل: 20323642
...