web-dev-qa-db-ja.com

MergeAreaを使用してVBA Excelで結合されたセルを検出する

これにはかなりの問題があります-Excelテーブルから水平および垂直に結合されたセルを検出する必要があります。最初のセル座標と、マージされた領域の長さを保存する必要があります。 2つのforサイクルでテーブルを1行ずつ繰り返します。

MergeAreaプロパティを使用して、マージされた領域とマージされていない領域を検出するにはどうすればよいですか?セルが結合されていない場合は、おそらく空の範囲を返しますが、これは次のとおりです。

「currentRangeが何もない場合」

まったく機能していません。何か案は?どうもありがとう。

28
zirael

これにはいくつかの役立つコードがあります。

mergedセル​​にカーソルを置き、イミディエイトウィンドウで次の質問をします。

アクティブセルは結合セルですか?

? 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
86
tbur

@tburで示されているように選択されたセルを操作することは便利ですが、利用可能な唯一のオプションではありません。

Range()を次のように使用できます。

If Worksheets("Sheet1").Range("A1").MergeCells Then
  Do something
Else
  Do something else
End If

または:

If Worksheets("Sheet1").Range("A1:C1").MergeCells Then
  Do something
Else
  Do something else
End If

あるいは、Cells()を使用できます。

If Worksheets("Sheet1").Cells(1, 1).MergeCells Then
  Do something
Else
  Do something else
End If
0
David Metcalfe