无法合并VBA 2007工作表中的单元格

时间:2013-03-27 13:58:49

标签: excel vba merge range

我正在尝试根据我给他的日期和年份创建一个自动工作安排的按钮。 它会创建一个名称在字符串中的新工作表 - 年

Sub Create_Arran_Click()

Dim year As String
Dim sdate As Date
Dim row As Integer

year = Worksheets("Main").Cells(17, 4)
sdate = Worksheets("Main").Cells(18, 4)
Sheets.Add.Name = year

For i = 1 To 56
row = ((i - 1) * 12) + 2
Worksheets(year).Cells(row, 1) = "week " & i
Worksheets(year).Cells(row + 1, 1) = "day"
Worksheets(year).Cells(row, 1).Font.Bold = True
For j = 2 To 15

    (!)Range(Cells(row, j), Cells(row, (j + 1))).Merge 
    Worksheets(year).Cells(row, j) = sdate + (j - 2)
    (!)Range(Cells(row + 1, j), Cells(row + 1, j + 1)).Merge 
    Worksheets(year).Cells(row + 1, j) = Weekday(sdate + (j - 2), vbSunday)

j = j + 2
Next
sdate = sdate + 7
Next'

问题是标有'!'的行没有在'年'表中进行合并。我试过几件事:

          'Worksheets(year).Range(Cells(row, j), Cells(row, (j + 1))).Merge

或                sheet(year).Range(Cells(row,j),Cells(row,(j + 1)))。合并 要么                工作表(年).activate

但没有任何帮助 任何人吗?

3 个答案:

答案 0 :(得分:1)

当您从另一个工作表引用范围时,您需要说出调用范围和单元格时的位置

所以而不是写作

Worksheets(year).Range(Cells(row, j), Cells(row, (j + 1))).Merge

这样做

with Worksheets(year)
.Range(.Cells(row, j), .Cells(row, (j + 1))).Merge
end with

注意我在调用Range和Cells

时如何引用工作表

答案 1 :(得分:1)

当你以这种格式引用单元格时需要引用工作表

张("年")。范​​围(张("年")。细胞(i,j),张("年")。细胞(我,j + 3))。合并

Sooraj

答案 2 :(得分:0)

执行Range(Cells(row, j), Cells(row, (j + 1))).Merge时,您将获取代码所在的工作表,而且可能不是“年份”工作表。

尝试改为Worksheets(Year).Range(Cells(row, j), Cells(row, (j + 1))).Merge

如有必要,请在之前激活:

Worksheets(Year).Activate
Worksheets(Year).Range(Cells(row, j), Cells(row, (j + 1))).Merge