Jeanは、[セルの書式設定]ダイアログボックスの[配置]タブにある[選択範囲の中央揃え]設定を使用して、結合されていないセル全体に情報を中央揃えするのが好きです。しかし、彼女は、1つのセルの内容を使用して、センタリングが発生するセルの数を制御できる方法があるかどうか疑問に思います。たとえば、セルA1に番号4がある場合、センタリングは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に設定され、目的の結果が得られます。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(4360)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。