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.
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
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