دیوید متعجب است که آیا می توان از Find and Replace برای مکان یابی و تغییر متن در کادرهای متنی یا برچسب ها در نمودارها استفاده کرد. پاسخ کوتاه این است که امکان پذیر نیست، اما چندین راه حل وجود دارد که می توانید امتحان کنید.
ابتدا میتوانید متن را در جعبههای متن یا برچسبهای نمودارتان بهراحتی پویا کنید، به طوری که به محتویات برخی از سلولهای کاربرگ گره بخورد. به عنوان مثال، می توانید کارهای زیر را برای جعبه متن خود انجام دهید:
- متن خود را از هر یک از کادرهای متنی در محدوده ای از سلول های صفحه کاری خود کپی کنید. (برای این مثال، فرض کنید که محتوای ده کادر متنی را در محدوده Z1:Z10 کپی کرده اید.)
- اولین کادر متنی (که مربوط به سلول Z1 است) را انتخاب کنید و از شر محتوای جعبه های متن خلاص شوید.
- در حالی که کادر متن هنوز انتخاب شده است، موارد زیر را در نوار فرمول وارد کنید: =Z1 . وقتی Enter را فشار میدهید ، کادر متن باید هر چیزی را که در سلول Z1 است منعکس کند.
- مراحل 2 و 3 را برای هر یک از کادرهای متن دیگر خود با استفاده از مرجع سلول مناسب برای هر کدام در مرحله 3 تکرار کنید.
خودشه. شما میتوانید از همین تکنیک با برچسبهای نمودار سفارشی استفاده کنید - تنها کاری که باید انجام دهید این است که برچسب نمودار را انتخاب کنید و یک مرجع سلولی را در نوار فرمول وارد کنید. با جعبه های متن و برچسب های نمودار که به سلول های کاربرگ گره خورده اند، می توانید به راحتی از Find and Replace برای جستجو و تغییر اطلاعات در سلول ها استفاده کنید. هنگامی که تغییرات انجام می شود، جعبه های متن و برچسب های نمودار باید به طور خودکار تغییرات در سلول ها را منعکس کنند.
تنها راه برای تغییر واقعی متن در جعبه متن یا برچسب نمودار، تغییر آن به صورت دستی یا تغییر آن با استفاده از یک ماکرو است. کد باید از هر کادر متنی در کاربرگ عبور کند و سپس تغییر خود را انجام دهد. نسخه زیر یک نسخه ساده از یک ماکرو است که می تواند چنین تغییری را ایجاد کند.
Sub TextBoxReplace()
Dim shp As Shape
Dim sOld As String
Dim sNew As String
Change as desired
sOld = "Old string"
sNew = "New string"
On Error Resume Next
For Each shp In ActiveSheet.Shapes
With shp.TextFrame.Characters
.Text = Application.WorksheetFunction.Substitute( _
.Text, sOld, sNew)
End With
Next
End Sub
این ماکرو تمام اشکال موجود در کاربرگ را طی میکند (جعبههای متنی شکل هستند) و سپس هر چیزی را که در متغیر sOld است با هر چیزی که در متغیر sNew است جایگزین میکند. همانطور که در ماکرو زیر نشان داده شده است، استفاده از تکنیک مشابه برای برچسب های نمودار کمی پیچیده تر است:
Sub ChartLabelReplace()
Dim Cht As ChartObject
Dim Ser As Series
Dim scPt As Point
Dim sOld As String
Dim sNew As String
Change as desired
sOld = "Old String"
sNew = "New String"
On Error Resume Next
For Each Cht In ActiveSheet.ChartObjects
For Each Ser In Cht.Chart.SeriesCollection
For Each scPt In Ser.Points
With scPt.DataLabel
.Text = Application.WorksheetFunction.Substitute( _
.Text, sOld, sNew)
End With
Next
Next
Next
End Sub
ماکرو از هر برچسب داده برای هر سری داده در هر نمودار عبور می کند و (دوباره) هر نمونه ای از هر آنچه در sOld است را با آنچه در sNew است جایگزین می کند.