ژان دوست دارد از تنظیم "Center Across Selection" در برگه Alignment کادر محاوره ای Format Cells استفاده کند تا اطلاعات را در سلول های ادغام نشده متمرکز کند. با این حال، او متعجب است که آیا راهی وجود دارد که بتواند از محتویات یک سلول برای کنترل تعداد سلولهای مرکزی استفاده کند. به عنوان مثال، اگر او عدد 4 را در سلول A1 داشته باشد، مرکز در 4 سلول (B1:E1) خواهد بود، اما اگر آن را به 5 تغییر دهد، مرکزیت بین 5 سلول خواهد بود (B1:F1).
تنها راهی که می توان این کار را انجام داد استفاده از ماکرو است. از آنجا که ممکن است مقدار سلول A1 را تغییر دهید، ماکرو باید هر زمان که تغییری در کتاب کار ایجاد میکنید اجرا شود و سپس تعیین کند که آیا این تغییر در سلول A1 انجام شده است یا خیر. اگر چنین است، میتواند تنظیمات را در سلولهای ردیف انجام دهد.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sWidth As String
Dim sStartCell As String
Dim iWidth As Integer
Dim r As Range
Dim sTemp As String
sWidth = "$A$1"
sStartCell = "$B$1"
If Target.Address = sWidth Then
iWidth = Range(sWidth).Value
If iWidth > 1 Then
sTemp = Right(sStartCell, 1)
sTemp = sTemp & ":" & sTemp
Range(sTemp).HorizontalAlignment = xlGeneral
Set r = Range(sStartCell)
Set r = r.Resize(1, iWidth)
r.HorizontalAlignment = xlCenterAcrossSelection
End If
End If
End Sub
توجه داشته باشید که این ماکرو در برگه کد کاربرگ مورد نظر قرار می گیرد. هر زمان که تغییری در کاربرگ ایجاد شود، ماکرو به طور خودکار اجرا می شود. برای اینکه آن را برای شما کار کند، باید آدرس های اختصاص داده شده به متغیرهای sWidth و sStartCell را تغییر دهید. sWidth روی سلولی تنظیم می شود که حاوی تعداد ستون هایی است که می خواهید در مرکز قرار دهید. sStartCell روی اولین سلول در سمت چپ محدوده ای که قرار است مرکز گذاری انجام شود، تنظیم می شود.
ماکرو هر چیزی را که در سلول sWidth شما وجود دارد را می گیرد و آن را در متغیر iWidth قرار می دهد. اگر این مقدار بزرگتر از 1 باشد، آنگاه تغییرات مرکز انجام می شود. (مرکز کردن روی انتخابی که عرض آن کمتر از 2 ستون است، منطقی نیست.) تراز همه سلولها به این صورت است که ردیف به حالت کلی برمیگردد، و سپس محدودهای تعریف میشود که به همان عرضی که شما مشخص کردهاید، شروع میشود. در سلول در sStartCell. برای این محدوده، تراز بر روی xlCenterAcrossSelection تنظیم شده است تا نتایج مورد نظر را ارائه دهد.