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

در یک کلان، رابرت مایل است محدوده یک نام تعریف شده را دریابد. برای مثال، او می خواهد فهرستی از تمام نام های تعریف شده ایجاد کند که در محدوده «ورک بوک» نیستند. او فکر می کند که آیا راهی برای انجام این کار به صورت برنامه ای وجود دارد؟

بله وجود دارد. نام های تعریف شده در ویژگی .Name شی Name ذخیره می شوند. (تقریباً زائد به نظر می رسد، درست است؟) اگر نام دارای محدوده یک کاربرگ واحد باشد، نام کاربرگ در ویژگی .Name قرار می گیرد. به عنوان مثال، ماکرو ساده زیر را در نظر بگیرید:

Sub ListNames()
    Dim n As Name
    Dim sTemp As String

    For Each n In Names
        sTemp = sTemp & "Name: " & n.Name & vbCr
    Next n
    MsgBox sTemp
End Sub

اگر چیزی که نمایش داده می شود، نام چیزی مانند «پاداش» یا «کارمندان» را نشان می دهد، آن گاه این نام شامل کل ورک بوک است. اگر نام، به جای آن، چیزی شبیه به "Sheet1!Bonus" یا "Sheet7!Employees" باشد، در این صورت نام دارای محدوده ای محدود به کاربرگ موجود در نام است.

این بدان معنی است که شما می توانید با کمی تغییر در ماکرو، تمام نام های تعریف شده را پیدا کنید که از نظر وسعت "Workbook" نیستند (همانطور که رابرت می خواست):

Sub ListNames2()
    Dim n As Name
    Dim sTemp As String

    For Each n In Names
        If Instr(n.Name, "!") > 0 Then
            sTemp = sTemp & "Name: " & n.Name & vbCr
        End If
    Next n
    MsgBox sTemp
End Sub

مثال های ارائه شده تا کنون به گام برداشتن در مجموعه نام ها متکی هستند که به طور پیش فرض مجموعه ای برای کل ورک بوک است. با این حال، هر کاربرگ مجموعه نام های مخصوص به خود را دارد، به این معنی که می توانید از میان کاربرگ ها برای تعیین نام ها عبور کنید:

Sub ListNames3()
    Dim n As Name
    Dim s As Worksheet
    Dim sTemp As String

    For Each s In Worksheets
        If s.Names.Count > 0 Then
            sTemp = sTemp & "Worksheet: " & s.Name & vbCr
            For Each n In s.Names
                sTemp = sTemp & "   Name: " & n.Name & vbCr
            Next n
        End If
    Next s
    MsgBox sTemp
End Sub

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

هنگامی که متوجه شدید که فقط نام ها در محدوده سطح کاربرگ دارای علامت تعجب هستند، می توانید آنها را به روش های دیگری پردازش کنید. به عنوان مثال، می توانید نام را به یک متغیر اختصاص دهید و همه چیز را از طریق علامت تعجب حذف کنید تا نام بدون نام کاربرگ به دست آید. و جالب اینجاست که می توانید با حذف نام کاربرگ، ویژگی .Name را از worksheet-scope به workbook-scope تغییر دهید.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

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

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

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

سوال مشابهی یافت نشد

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما

23.2k سوال

8.5k پاسخ

608 دیدگاه

9.7k کاربر

71 نفر آنلاین
0 عضو و 71 مهمان در سایت حاضرند
بازدید امروز: 2731
بازدید دیروز: 14599
بازدید کل: 15084361
...