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

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

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

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

=$C$15

این محتویات جعبه متن را به هر چیزی که در سلول C15 است متصل می کند. همچنین می توانید در صورت تمایل، هر آنچه را که در نوار فرمول وجود دارد حذف کنید و با فعال بودن نوار فرمول، روی سلولی که می خواهید پیوند داده شود کلیک کنید. آدرس سلول باید در نوار فرمول ظاهر شود. Enter را فشار دهید و کار انجام می شود.

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

قبل از ارائه برخی پاسخ های بالقوه مرتبط با کلان، به کمی پیش زمینه در مورد مدل شی Excels نیاز دارید که از طریق VBA قابل دسترسی است.

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

اگر یک کادر متنی را روی یک صفحه نمودار واقعی قرار دهید، به روش زیر قابل دسترسی است:

Sub FindTextBoxes1()
    Dim c As Chart
    Dim s As Shape
    Dim sMsg As String
    Dim sName As String

    For Each c In ActiveWorkbook.Charts
        For Each s In c.Shapes
            If s.Type = msoTextBox Then
                sMsg = s.TextFrame2.TextRange.Text
                sName = s.Name
                MsgBox "Text: " & sMsg, vbOKOnly, sName
            End If
        Next s
    Next c
End Sub

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

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

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

Sub FindTextBoxes2()
    Dim w As Worksheet
    Dim c As ChartObject
    Dim s As Shape
    Dim sMsg As String
    Dim sName As String

    For Each w In ActiveWorkbook.Worksheets
        For Each c In w.ChartObjects
            For Each s In c.Chart.Shapes
                If s.Type = msoTextBox Then
                    sMsg = "This text box is a child of the "
                    sMsg = sMsg & "embedded chart" & vbCrLf
                    sMsg = sMsg & "Text: " & s.TextFrame2.TextRange.Text
                    sName = s.Name
                    MsgBox sMsg, vbOKOnly, sName
                End If
            Next s
        Next c
        For Each s In w.Shapes
            If s.Type = msoTextBox Then
                sMsg = "This text box is a child of the "
                sMsg = sMsg & "worksheet" & vbCrLf
                sMsg = sMsg & "Text: " & s.TextFrame2.TextRange.Text
                sName = s.Name
                MsgBox sMsg, vbOKOnly, sName
            End If
        Next s
    Next w
End Sub

هنگامی که ماکرو را اجرا می کنید، یک کادر پیام برای هر جعبه متنی می بینید که واقعاً فرزند نمودارهای تعبیه شده است. سپس، یک کادر پیام برای هر جعبه متنی که فرزند کاربرگ است، خواهید دید. همانطور که در ماکرو قبلی، این مورد بررسی می کند تا مطمئن شود که شی Shape واقعاً یک کادر متنی است قبل از نمایش اطلاعات در مورد آن. این امر به ویژه هنگام عبور از هر شکل در کاربرگ مهم است، زیرا هر نمودار تعبیه شده روی برگه نیز بخشی از مجموعه Shapes در نظر گرفته می شود.

مانند قبل، برای تغییر متن موجود در یک جعبه متن، تنها کاری که باید انجام دهید این است که ویژگی Text شی TextRange را تغییر دهید.

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

پاسخ شما

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

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

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

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

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

23.2k سوال

8.5k پاسخ

608 دیدگاه

9.7k کاربر

158 نفر آنلاین
0 عضو و 158 مهمان در سایت حاضرند
بازدید امروز: 10046
بازدید دیروز: 11078
بازدید کل: 15077082
...