2013-03-27 86 views
1

我試圖創建一個按鈕,根據我給他的日期和年份進行自動工作安排。 它創建了一個名爲新的工作表,在串 - 「!」今年無法合併VBA 2007工作表中的單元格無效

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 

或 片(年).Range(細胞(行,j)中,將細胞(行,第(j + 1)))合併 或 工作表(年)。激活

但沒有任何幫助 任何人?

+0

該代碼工作對我來說在Excel 2010中 - 你說行用'!'標記沒有工作,但我看不到有行標記。 – 2013-03-27 14:08:24

+0

我再次編輯它。它是否合併工作表(年)中的單元格? – 2013-03-27 14:32:45

+0

是的,它爲每個「Date」合併兩個單元格,並且在工作表(年)'56'的每個56週中合併每個'Date'的兩個單元格。 – 2013-03-27 14:40:29

回答

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 

注意我是如何引用表既當我打電話範圍和細胞

+0

YES!非常非常感謝你!!! – 2013-03-27 17:30:05

+0

很高興能有所幫助 – 2013-03-27 17:47:09

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 
+0

謝謝你的答案 - 不幸的是我已經嘗試過他們兩個,它不工作,這 - 工作表(年)。範圍(單元格(行,j),單元格行,(j + 1)))。合併 - 無法編譯): – 2013-03-27 15:14:33

1

你需要的時候你是指細胞也以這種格式

表(「年」)來引用表。範圍(張( 。 「年」)細胞(I,J),片( 「年」)細胞(I,J + 3))合併

Sooraj