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

j'ai un gros problème avec celui - ci-je dois détecter horizontalement et verticalement des cellules fusionnées à partir d'une table excel. Je dois stocker les premières cellules coords, et la longueur de la zone fusionnée. Je passe à travers le tableau avec deux cycles, ligne par ligne.

Comment puis-je 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 retourner la plage vide, cependant, ceci:

"si currentRange N'est rien Ensuite,"

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

23
demandé sur zirael 2014-02-27 21:32:46

2 réponses

il y a plusieurs bits de code utiles pour cela.

Placez votre curseur dans un fusionné tapez et posez ces questions dans la fenêtre Immidiate:

la cellule activecell est-elle 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:$F
71
répondu tbur 2014-02-27 18:14:05

alors que travailler avec des cellules sélectionnées comme montré par @tbur peut être utile, ce n'est pas la seule option disponible.

Vous pouvez utiliser Range () comme ceci:

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 Cellules():

If Worksheets("Sheet1").Cells(1, 1).MergeCells Then
  Do something
Else
  Do something else
End If
-1
répondu David Metcalfe 2018-05-01 03:09:23