web-dev-qa-db-fra.com

Détecter les cellules fusionnées dans VBA Excel avec MergeArea

J'ai un problème avec celui-ci - je dois détecter les cellules fusionnées horizontalement et verticalement à partir d'un tableau Excel. Je dois stocker les premières coordonnées de cellule et la longueur de la zone fusionnée. Je parcoure la table avec deux cycles-alternatifs, ligne par ligne.

Comment utiliser la propriété MergeArea pour détecter les zones fusionnées et non fusionnées? Si la cellule n'est pas fusionnée, elle devrait probablement renvoyer une plage vide, cependant, ceci:

"Si currentRange n'est rien alors"

ne fonctionne pas du tout. Des idées? Merci beaucoup.

28
zirael

Il existe plusieurs bits de code utiles pour cela.

Placez votre curseur dans une cellule fusionnée et posez les questions suivantes dans la fenêtre Immidiate:

La cellule active est-elle une cellule fusionnée?

? Activecell.Mergecells
 True

Combien de cellules sont fusionnées?

? Activecell.MergeArea.Cells.Count
 2

Combien de colonnes sont fusionnées?

? Activecell.MergeArea.Columns.Count
 2

Combien de lignes sont fusionnées?

? Activecell.MergeArea.Rows.Count
  1

Quelle est l'adresse de la plage fusionnée?

? activecell.MergeArea.Address
  $F$2:$F$3
86
tbur

Bien que travailler avec les cellules sélectionnées comme indiqué par @tbur puisse être utile, ce n’est pas la seule option disponible.

Vous pouvez utiliser Range () comme suit:

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

Ou:

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

Alternativement, vous pouvez utiliser Cells ():

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