Jean喜欢使用“设置单元格格式”对话框的“对齐方式”选项卡上的“跨中心选择”设置来使未合并单元格中的信息居中。但是,她想知道是否有办法使用一个单元格的内容来控制居中发生在多少个单元格上。例如,如果她在单元格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_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(4360)适用于Microsoft Excel 2007、2010、2013和2016。