Excel VBA中的范围

我已经编写了这个代码来合并每列中的几行,从列C到AZ。

出于某种原因,范围与我期望的范围不匹配,在这种情况下,代码会合并单元格C8:C10,然后是D8:D12,E8:E12等等。 在这个例子中线= 2。

我不明白为什么不匹配如果行的值不改变的内部。

谢谢!

For columns = 0 To 49 Range(Range("C8").Offset(0, columns), Range("C8").Offset((lines), columns)).Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 90 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = True End With next comlumns 

Columns是一个保留字。 你说这个代码确实运行?

如果我将其更改为有效的variables,则代码将运行。 问题是你使用偏移的方式

?[C8].offset(2).address在你合并后的?[C8].offset(2).address将会给你$C$12

同时避免使用。selectINTERESTING READ更不用说完全限定你的对象。 例如,您的范围和单元格对象不完全合格,可能会给您错误。

我想,这是你正在努力实现的?

 Sub Sample() Dim ws As Worksheet Dim rng As Range Dim i As Long, rw As Long Set ws = ThisWorkbook.Sheets("Sheet1") rw = 2 With ws For i = 3 To 52 Set rng = .Range(.Cells(8, i), .Cells(8 + rw, i)) With rng .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 90 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = True End With Next i End With End Sub