2014-02-27 502 views
17

我有這個一個相當一個問題 - 我必須從一個Excel表格檢測水平和垂直合併的單元格。我必須存儲第一個單元格座標和合並區域的長度。我用兩個for-cycle逐行遍歷表格。檢測VBA中的Excel單元格合併與MergeArea

如何使用MergeArea屬性來檢測合併和非合併的區域? 如果小區不合並,它可能應該返回空範圍,但是,這樣的:

「如果currentRange是沒有那麼」

是不工作的。有任何想法嗎? 非常感謝。

+2

首先,爲什麼不更新您的問題與您有問題的實際代碼?如果單元格*不*合併然後mergearea仍然返回一個單元格範圍,所以你不能只檢查'如果不c.MergeArea是Nothing'。你需要檢查的行/列數,你可以使用'c.MergeArea.Cells(1)' –

回答

59

有代碼這幾個有用位。

將您在光標合併細胞,並要求在Immidiate窗口中的這些問題:

是在activecell合併單元格?

? Activecell.Mergecells 
True 

合併了多少個單元格?

? Activecell.MergeArea.Cells.Count 
2 

合併了多少列?

? Activecell.MergeArea.Columns.Count 
2 

合併了多少行?

? Activecell.MergeArea.Rows.Count 
    1 

什麼是合併範圍內的地址?

? activecell.MergeArea.Address 
    $F$2:$F$3 
+7

+1'Mergecells'是新的我 –

+1

不錯尖找到左上角單元格。感謝您的幫助。根據[MSDN] –

+1

(https://msdn.microsoft.com/en-us/library/office/ff822300(V = office.15)的.aspx)的MergeArea屬性返回範圍對象本身,如果它是不** **在合併區域。所以你應該能夠使用MergeArea而不必首先檢查MergeCells。在我的代碼中工作。 – Rossco