ژان باید کاما را با نقطه در جدول اعداد جایگزین کند. او در فرانسه کار می کند و از رایانه شخصی فرانسوی استفاده می کند، اما باید این اعداد را برای یک برنامه آمریکایی غیر اکسل «ترجمه» کند. وقتی او به صورت دستی Find and Replace را انجام می دهد، همه چیز به خوبی کار می کند. البته، اعداد او به رشته تبدیل می شوند، اما ژان مشکلی ندارد. وقتی او سعی می کند همان عملیات Find and Replace را در یک ماکرو انجام دهد، هیچ اتفاقی نمی افتد. به نظر می رسد که کاما نادیده گرفته شده است. ژان تعجب می کند که چگونه می تواند این کار را به صورت ماکرو انجام دهد نه اینکه هر بار به صورت دستی آن را انجام دهد.
تغییر موقت آنچه اکسل به عنوان تنظیمات منطقه ای استفاده می کند، نسبتاً آسان است تا بتواند اطلاعات را همانطور که ژان می خواهد نمایش دهد. ماکرو زیر به راحتی بین تنظیمات مورد نظر جابه جا می شود:
Sub ChangeNumberFormat()
With Application
.UseSystemSeparators = False
If .DecimalSeparator = "." Then
.DecimalSeparator = ","
.ThousandsSeparator = "."
Else
.DecimalSeparator = "."
.ThousandsSeparator = ","
End If
End With
End Sub
که نحوه نمایش اطلاعات را تغییر می دهد و سپس می توانید اطلاعات را به هر فرمت غیر اکسل دلخواه (مانند CSV) صادر کنید. پس از اتمام، ماکرو را دوباره اجرا کنید و باید تنظیمات منطقه ای خود را به حالت اولیه بازگردانید. مزیت این رویکرد این است که شما هرگز آنچه را که در سلول ها است تغییر نمی دهید، فقط نحوه نمایش اطلاعات را تغییر نمی دهید. این بدان معنی است که اعداد شما همچنان اعداد باقی می مانند و می توانند به همین ترتیب استفاده شوند.
اگر به چیزی مستقیمتر نیاز دارید، احتمالاً بهتر است از Find and Replace استفاده نکنید. در عوض، از ماکرو برای تغییر مستقیم آنچه در هر سلول است استفاده کنید. چنین رویکردی می تواند بسیار سریع تر از تکیه بر Find and Replace حتی در یک ماکرو اجرا شود. در اینجا یک کاربرد ساده از این مفهوم وجود دارد:
Sub SwitchCommasPeriods()
Dim c As Range
Dim sTemp As String
For Each c In Selection
sTemp = c.Text
sTemp = Replace(sTemp, ",", "|")
sTemp = Replace(sTemp, ".", ",")
sTemp = Replace(sTemp, "|", ".")
c = sTemp
Next c
End Sub
به چند مورد در ماکرو توجه کنید. ابتدا به ویژگی Text برای هر سلول نگاه می کند. دلیل آن این است که ویژگی Text مقدار قالب بندی شده سلول را برمی گرداند - به عبارت دیگر، آنچه نمایش داده می شود. (اگر به سادگی به ویژگی Value نگاه کنید، عدد فرمت نشده را دریافت می کنید، که آن چیزی نیست که می خواهید استفاده کنید.)
دومین نکته ای که باید به آن توجه کنید این است که از تابع Replace برای جایگزینی تمام کاماها با یک نوار عمودی، سپس تمام نقطه ها با کاما و در نهایت تمام میله های عمودی با نقطه استفاده می شود. این رویکرد ضروری است زیرا شما اساساً نقطه و کاما را در متن عوض می کنید.
برای استفاده از ماکرو، کافی است سلول هایی را که می خواهید تحت تأثیر قرار دهید انتخاب کنید و سپس آن را اجرا کنید. فقط آن سلول های انتخاب شده پردازش می شوند. اگر یک سلول حاوی فرمول باشد، ماکرو آن فرمول را با نتیجه پردازش شده فرمول جایگزین می کند. با این حال، این باید برای اهداف شلوار جین خوب باشد.