Détecter des cellules fusionnées dans VBA Excel avec MerGeArea
Question
Je vais avoir un problème avec celui-ci - je dois détecter horizontalement et verticalement des cellules à une table Excel.Je dois stocker les premières coordonnées de cellules et la longueur de la zone fusionnée.I ITERER à travers la table avec deux pour cycles, ligne par ligne.
Comment puis-je utiliser la propriété mergeaea pour détecter les zones fusionnées et non fusionnées? Si la cellule n'est pas fusionnée, il devrait probablement retourner la plage vide, cependant, ceci:
"Si CurrentRange n'est rien alors"
ne fonctionne pas du tout.Des idées? Merci beaucoup.
La solution
Il y a plusieurs bits de code utiles pour cela.
Placez votre curseur dans une cellule fusionnée et posez ces questions dans la fenêtre Immidiate:
est l'ActiveCell une cellule fusionnée?
? Activecell.Mergecells
True
Combien de cellules sont fusionnées?
? Activecell.MergeArea.Cells.Count
2
Combien de colonnes 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
Autres conseils
Tout en travaillant avec des cellules sélectionnées comme indiqué par @TBUR peut être utile, ce n'est pas non plus la seule option disponible.
Vous pouvez utiliser
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